#eqprofile #begin #description Обмен данными с Фронтол 6 #name Обмен данными с Фронтол 6 #code 0000000355 #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',212.00000000,'//Выгрузка остатков по разрезам в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем команду - либо заменить (обновить) информацию о разрезах, либо добавить/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEASPECTREMAINSWITHOUTSALE", "$$$ADDASPECTREMAINS" ) );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT t1.code AS subcode, t1.nngroup, t1.aspect, t1.kolp, t1.cena, t2.code /##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " t2 ON t1.subcode = t2.nn /##CHR(13)##//##CHR(10)##/ WHERE t1.f_subres = 1 AND t1.nngroup <> '''' AND t1.cena >" + IIF( !ТОВАРЫБЕЗЦЕНЫ, "", "=" ) + " 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоваров.nngroup + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ aspectList = "";/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ aspectValue = ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоваров.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ // Для тех разрезов, для которых нет значения для данного товара, проставляем специальное значение 999999999/##CHR(13)##//##CHR(10)##/ aspectList = aspectList + IIF( !EMPTY( aspectList ), ",", "" ) + ЕСЛИ( aspectValue == "0", "999999999", aspectValue ); /##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ // Если удалось собрать список кодов - формируем строку в файле/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( aspectList ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Строка в формате АТОЛ/##CHR(13)##//##CHR(10)##/ // остаток только если Признак загрузки остатков не равен "не надо загружать"/##CHR(13)##//##CHR(10)##/ Строка = code + ";" + IIF( saldotype <> 0,STR( kolp, 10, 3 ), "0") + ";" + /##CHR(13)##//##CHR(10)##/ aspectList + ";" + ALLTRIM( STR( cena, 8, 2 ) ) + ";;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // Записываем в таблицу штриховых кодов, список разрезов /##CHR(13)##//##CHR(10)##/ ЗАПРОС("UPDATE " + ШТРИХКОДЫ + " SET aspectlist= ''" + aspectList + "'', used= 1, code = ''"+code+"'' WHERE code= ''" + subcode + "''");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',241.00000000,'/##CHR(13)##//##CHR(10)##///Проверка наличия данных для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае наличия данных для загрузки и ЛОЖЬ, в случае их отсутствия./##CHR(13)##//##CHR(10)##/// Проверяем наличие самих файлов и возможность чтения данных из них /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ЕстьФайлы = false;/##CHR(13)##//##CHR(10)##/ИмяФайла = ФайлНайти( СжатьПробелы( ИмяФайла ) );/##CHR(13)##//##CHR(10)##/ФайлЗакончитьПоиск( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Пытаемся открыть файл. Файл может существовать, но быть занят, /##CHR(13)##//##CHR(10)##/// например, он в процессе формирования, поэтому его не удасться загрузить/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( ИмяФайла ) AND ( РучнойОбмен OR !ФАЙЛ( ИмяФайлаФлага ) OR !EMPTY( exchangeservice_in ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла >= 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ЕстьФайлы = true;/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( ИмяФайла ) AND РучнойОбмен )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Для кассы """ + ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) + """ нет файлов для загрузки" );/##CHR(13)##//##CHR(10)##/ RETURN true;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕстьФайлы;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',208.00000000,'//Выгрузка всех товаров в ККМ./##CHR(13)##//##CHR(10)##/СтавкаБезНДС = ЗАПРОС( "SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM sprlistkodn /##CHR(13)##//##CHR(10)##/ WHERE code = ( SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM speclistkodn /##CHR(13)##//##CHR(10)##/ WHERE list = ( SELECT TOP 1 code FROM/##CHR(13)##//##CHR(10)##/ sprkodn /##CHR(13)##//##CHR(10)##/ WHERE ntype = '''' ) )");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КодФирмыОборудования = ЗАПРОС("SELECT firm FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''");/##CHR(13)##//##CHR(10)##///если заполнена фирма в оборудовании, то определяем признак не плательщика НДС из выбранной фирмы/##CHR(13)##//##CHR(10)##///иначе берем выбранныю фирму в группе ресурсов/##CHR(13)##//##CHR(10)##/ЧастьЗапросаФирмаБезНДС = "";/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( КодФирмыОборудования ) )/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = ''" + КодФирмыОборудования + "'' ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = temp.firm ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///если в группе ресурсов не указана фирма, а указан код ФР и заполнен список фирм в оборудовании, то второй запрос поменять на/##CHR(13)##//##CHR(10)##///ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = (SELECT TOP 1 firm FROM " + СПИСОКФР + " WHERE fr_code = temp.nkkm ) ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса = "";/##CHR(13)##//##CHR(10)##/ЧастьЗапросаРеквизитовАгента = "";/##CHR(13)##//##CHR(10)##/mAgentDetailsCode = "";/##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента = ", sprres.f_agentware AS sprres_f_agentware, sprres.vendor AS sprres_vendor "/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ("Подготовка к формированию файла выгрузки");/##CHR(13)##//##CHR(10)##/ТекстЗапроса = "SELECT temp.*, /##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnnname( sprres.code ) ELSE sprres.name END AS sprres_name,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnncname( sprres.code ) ELSE sprres.shortname END AS sprres_shortname,/##CHR(13)##//##CHR(10)##/ sprres.nnvid AS sprres_nnvid,/##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprres.nnvid ) AS sprres_alcotype,/##CHR(13)##//##CHR(10)##/ ISNULL( (SELECT MAX( d_litr ) FROM sprres_egais WHERE code = sprres.code), 0 ) AS spregais_d_litr,/##CHR(13)##//##CHR(10)##/ sprres.d_litr AS sprres_d_litr,/##CHR(13)##//##CHR(10)##/ sprres.a_proc AS sprres_a_proc,/##CHR(13)##//##CHR(10)##/ sprres.ed AS sprres_ed,/##CHR(13)##//##CHR(10)##/ (SELECT ffdcode FROM spredn WHERE code = sprres.ed) AS ffdcode,/##CHR(13)##//##CHR(10)##/ (SELECT f_volume FROM spredn WHERE code = sprres.ed) AS ed_f_volume,/##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.rsubject, '''' ) AS spr_rsubject,/##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.paytype, '''' ) AS spr_paytype,/##CHR(13)##//##CHR(10)##/ sprres.f_make AS sprres_f_make,/##CHR(13)##//##CHR(10)##/ sprres.cat AS sprres_cat,/##CHR(13)##//##CHR(10)##/ sprres.markgroup AS sprres_markgroup,/##CHR(13)##//##CHR(10)##/ sprres.f_mark AS sprres_f_mark,/##CHR(13)##//##CHR(10)##/ sprres.f_marknotrequire AS sprres_f_marknotrequire,/##CHR(13)##//##CHR(10)##/ sprres.f_draft AS sprres_f_draft,/##CHR(13)##//##CHR(10)##/ sprres.gtin AS sprres_gtin,/##CHR(13)##//##CHR(10)##/ sprres.enterprice AS sprres_enterprice,/##CHR(13)##//##CHR(10)##/ ISNULL( dbo.fn_getint_ex(''SPR'', ''S02'', ''ФронтолБезВводаКоличества'', sprres.code, '''', '''', '''' ), 0 ) AS noenterquantity,/##CHR(13)##//##CHR(10)##/ (SELECT TOP 1 fr_code FROM " + СПИСОКФР + " WHERE firm = temp.firm) AS tovar_firm " +/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС + /##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/kodGrPintChek = "";/##CHR(13)##//##CHR(10)##/kodGrPintCopy = "";/##CHR(13)##//##CHR(10)##/kodGrPintInvoice = "";/##CHR(13)##//##CHR(10)##/kodGrPintMark = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintChek,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintCopy,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintInvoice,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintMark "; /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/vizualmodif = "";/##CHR(13)##//##CHR(10)##/ЛеваяГраница = "";/##CHR(13)##//##CHR(10)##/ПраваяГраница = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", dbo.fn_getint_ex( ''SPR'', ''S02'', ''ВизуальныйВыборМодификаторов'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS vizualmodif,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ЛеваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ЛеваяГраница,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ПраваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ПраваяГраница ";/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса += " FROM " + ТОВАРЫ + " temp /##CHR(13)##//##CHR(10)##/INNER JOIN sprres sprres ON temp.code = sprres.maincode /##CHR(13)##//##CHR(10)##/LEFT OUTER JOIN sprres_g sprres_g ON sprres.group_ = sprres_g.code";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ(ТекстЗапроса,"СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрокОбщее = КоличествоСтрок("СписокТоваров");/##CHR(13)##//##CHR(10)##/Индикатор("Выгрузка товаров",КоличествоСтрокОбщее);/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок=0;/##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО("СписокТоваров");/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ( "Формирование файла выгрузки");/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //СИСТЕМНОЕСООБЩЕНИЕ( "Пожалуйста, подождите.");/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, " Выгрузка товаров. Обработка " + Alltrim(КоличествоСтрок) + " из " + ALLTRIM(КоличествоСтрокОбщее) );/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если указано выгружать только разрезы, без самих карточек, то пропускаем карточки разрезов/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 AND СписокТоваров.f_subres )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Вычисляем код ФР, который должен использоваться с товаром/##CHR(13)##//##CHR(10)##/ // Если в группе ресурсов указан конкретный код - берем его/##CHR(13)##//##CHR(10)##/ // Иначе, берем фирму и по ней ищем код ФР в l_frlist/##CHR(13)##//##CHR(10)##/ mFr_code = ЕСЛИ( VAL( nkkm ) != 0, nkkm, СписокТоваров.tovar_firm ); // Фронтол 5.9 перестал понимать 22-е поле адекватно. Теперь оно выгружается как код группы печати чека, если не указано иное/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ mBarcode = ALLTRIM( СписокТоваров.barcode );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ rsubject = СписокТоваров.spr_rsubject;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( VAL( СписокТоваров.spr_paytype ) == 1 OR VAL( СписокТоваров.spr_paytype ) == 2 )/##CHR(13)##//##CHR(10)##/ mPaytype = СписокТоваров.spr_paytype;/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ mPaytype = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mName = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( name ), sprres_name ), 100 );/##CHR(13)##//##CHR(10)##/ mCname = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( cname ), sprres_shortname ), 100 ); // Краткое наименование используется для чека/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокТоваров.sprres_alcotype ) == 1;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = VAL( СписокТоваров.sprres_alcotype ) == 2;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( СписокТоваров.sprres_nnvid, "481" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = false;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mNNVid = СписокТоваров.sprres_nnvid;/##CHR(13)##//##CHR(10)##/ mVolume = STR( ЕСЛИ( VAL( СписокТоваров.spregais_d_litr ) != 0, СписокТоваров.spregais_d_litr, СписокТоваров.sprres_d_litr ), 10, 6 );/##CHR(13)##//##CHR(10)##/ mAProc = STR( СписокТоваров.sprres_a_proc, 10, 2 );/##CHR(13)##//##CHR(10)##/ mEnterPrice = СписокТоваров.sprres_enterprice;/##CHR(13)##//##CHR(10)##/ mNoEnterquantity = СписокТоваров.noenterquantity;/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //значение по умолчанию - обычный товар/##CHR(13)##//##CHR(10)##/ mSIZmark = "";/##CHR(13)##//##CHR(10)##/ mF_marknotrequire = 1;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_mark )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //Код группы маркируемого товара:/##CHR(13)##//##CHR(10)##/ //0005 - табачная продукция, /##CHR(13)##//##CHR(10)##/ //1520 - обувь, /##CHR(13)##//##CHR(10)##/ //0002 - изделия из меха, /##CHR(13)##//##CHR(10)##/ //0003 - лекарственные препараты, /##CHR(13)##//##CHR(10)##/ //9999 - прочая, /##CHR(13)##//##CHR(10)##/ //9998 - легпром, /##CHR(13)##//##CHR(10)##/ //9997 - шины, /##CHR(13)##//##CHR(10)##/ //9996 - фото, /##CHR(13)##//##CHR(10)##/ //9995 - духи и парфюм, /##CHR(13)##//##CHR(10)##/ //9994 - альтернативный табак, /##CHR(13)##//##CHR(10)##/ //9993 - молочная продукция, /##CHR(13)##//##CHR(10)##/ //9992 - вода/##CHR(13)##//##CHR(10)##/ //9991 - ювелирная продукция/##CHR(13)##//##CHR(10)##/ //9990 - никотинсодержащая продукция/##CHR(13)##//##CHR(10)##/ //9989 - пиво и пивные напитки/##CHR(13)##//##CHR(10)##/ //Все то что отмечено флагом "Маркированный", но со значением отличным от перечисленных, выгружается как значение 7 - прочая маркировка/##CHR(13)##//##CHR(10)##/ //0000 - СИЗ - выгружается как обычный товар/##CHR(13)##//##CHR(10)##/ mMarkGroup = ЕСЛИ( СписокТоваров.sprres_markgroup == "0002", 2, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0003", 3, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0005", 4, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "1520", 5, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9999", 7, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9998", 11, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9997", 10, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9996", 8, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9995", 9, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9994", 12, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9993", 13, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9991", 14, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9992", 15, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9990", 16,/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0000", 0, 7 ) ) ) ) ) ) ) ) ) ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //для СИЗ передадим код из поля GTIN в 64 поле/##CHR(13)##//##CHR(10)##/ mSIZmark = ЕСЛИ( СписокТоваров.sprres_markgroup == "0000", СписокТоваров.sprres_gtin, "");/##CHR(13)##//##CHR(10)##/ mF_marknotrequire = ЕСЛИ( СписокТоваров.sprres_f_marknotrequire,1,0);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //для крепкого алкоголя и пива устанавливаем свои признаки /##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 1; //алкогольная продукция/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 1 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 18; //разливное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 0 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 17; //фасованное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( ПивнаяПродукция )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //обычный товар/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_make ) /##CHR(13)##//##CHR(10)##/ rsubject = "5";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_cat == "002" )/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 2 ) //подакцизный товар/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 3 ) //работа/##CHR(13)##//##CHR(10)##/ rsubject = "3";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 4 ) //услуга/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 13 ) //иной предмет расчета/##CHR(13)##//##CHR(10)##/ rsubject = "6";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 10 ) //платеж/##CHR(13)##//##CHR(10)##/ rsubject = "7"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 11 ) //агентское вознаграждение/##CHR(13)##//##CHR(10)##/ rsubject = "8"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 7 ) //лотерейный билет/##CHR(13)##//##CHR(10)##/ rsubject = "9"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 9 ) //результаты интеллектуальной деятельности/##CHR(13)##//##CHR(10)##/ rsubject = "10";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 12 ) //выплата/##CHR(13)##//##CHR(10)##/ rsubject = "11";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 18 ) //курортный сбор/##CHR(13)##//##CHR(10)##/ rsubject = "12";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 27 ) //выдача денежных средств/##CHR(13)##//##CHR(10)##/ rsubject = "13";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_agentware == true AND !ПУСТО(СписокТоваров.sprres_vendor) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAgentDetailsCode = VAL(СписокТоваров.sprres_vendor);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СписокТоваров.ffdcode))/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.ffdcode == 0 )/##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 10 )/##CHR(13)##//##CHR(10)##/ mffdcode = 1;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 11 )/##CHR(13)##//##CHR(10)##/ mffdcode = 2; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 12 )/##CHR(13)##//##CHR(10)##/ mffdcode = 3;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 20 )/##CHR(13)##//##CHR(10)##/ mffdcode = 4; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 21 )/##CHR(13)##//##CHR(10)##/ mffdcode = 5;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 22 )/##CHR(13)##//##CHR(10)##/ mffdcode = 6;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 30 )/##CHR(13)##//##CHR(10)##/ mffdcode = 7;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 31 )/##CHR(13)##//##CHR(10)##/ mffdcode = 8;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 32 )/##CHR(13)##//##CHR(10)##/ mffdcode = 9;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 40 )/##CHR(13)##//##CHR(10)##/ mffdcode = 10; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 41 )/##CHR(13)##//##CHR(10)##/ mffdcode = 11; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 42 )/##CHR(13)##//##CHR(10)##/ mffdcode = 12;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 50 )/##CHR(13)##//##CHR(10)##/ mffdcode = 13;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 51 )/##CHR(13)##//##CHR(10)##/ mffdcode = 14; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 70 )/##CHR(13)##//##CHR(10)##/ mffdcode = 15; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 71 )/##CHR(13)##//##CHR(10)##/ mffdcode = 16; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 72 )/##CHR(13)##//##CHR(10)##/ mffdcode = 17; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 73 )/##CHR(13)##//##CHR(10)##/ mffdcode = 18;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 80 )/##CHR(13)##//##CHR(10)##/ mffdcode = 19; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 81 )/##CHR(13)##//##CHR(10)##/ mffdcode = 20; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 82 )/##CHR(13)##//##CHR(10)##/ mffdcode = 21; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 83 )/##CHR(13)##//##CHR(10)##/ mffdcode = 22; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 255 )/##CHR(13)##//##CHR(10)##/ mffdcode = 23; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mCena = ALLTRIM( STR( СписокТоваров.cena, 8, 2 ) );/##CHR(13)##//##CHR(10)##/ //------ Обрабатываем товары, у которых не нулевая цена./##CHR(13)##//##CHR(10)##/ //------ Если указано грузить все, то грузим с любой ценой/##CHR(13)##//##CHR(10)##/ //------ Если товар заголовочный (есть разререзы), то цена тоже не важна/##CHR(13)##//##CHR(10)##/ IF ( !ТОВАРЫБЕЗЦЕНЫ AND VAL( mCena ) <= 0 AND !f_hchild )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mMin_cena = IIF( !EMPTY( min_cena ), ALLTRIM( STR( min_cena, 8, 2 ) ), "");/##CHR(13)##//##CHR(10)##/ // Расчитываем срок хранения/##CHR(13)##//##CHR(10)##/ mStore_period = IIF( store_period <> 0, ALLTRIM( DTOC( store_period + DATE( ) ) ), "" );/##CHR(13)##//##CHR(10)##/ // Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_sch = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", ALLTRIM( nngroup ) );/##CHR(13)##//##CHR(10)##/ // Вариант использования разрезов: 0 — полный список; 1 — заданный список; 2 — заданный список с остатком/##CHR(13)##//##CHR(10)##/ mAspect_var = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", IIF( saldotype > 0, "2", "1" ) );/##CHR(13)##//##CHR(10)##/ // Код родительской группы/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( parent == 0, 0, ABS( parent ) + IIF(parent < 0, 2000000000, 1000000000 ) ) ) );/##CHR(13)##//##CHR(10)##/ // Код налога/##CHR(13)##//##CHR(10)##/ mKodn = IIF( f_nalogs, ALLTRIM( STR( VAL( kodn ) ) ), "" );/##CHR(13)##//##CHR(10)##/ //если в карточке фирмы установлен флаг "Не является плательщиком НДС", то выгружаем ставку БезНДС для товара/##CHR(13)##//##CHR(10)##/ IF ( f_nalogs AND firm_fwonds )/##CHR(13)##//##CHR(10)##/ mKodn = ALLTRIM( STR( VAL( СтавкаБезНДС ) ) );/##CHR(13)##//##CHR(10)##/ // Артикул/##CHR(13)##//##CHR(10)##/ mArticle = LEFT( ALLTRIM( article ), 20 );/##CHR(13)##//##CHR(10)##/ // Путь к картинке/##CHR(13)##//##CHR(10)##/ mImage_path = ALLTRIM( image_path );/##CHR(13)##//##CHR(10)##/ mNote = STDE( note );/##CHR(13)##//##CHR(10)##/ mKkm_section = ALLTRIM( STR( VAL( kkm_section ) ) );/##CHR(13)##//##CHR(10)##/ // Принтер для печати чеков/##CHR(13)##//##CHR(10)##/ mCheckPrinter = ALLTRIM( checkPrinter );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mFlags = ЕСЛИ( fractqty OR waretype == 0, "1", "0" ) + "," + //1. дробное количество (весовой)/##CHR(13)##//##CHR(10)##/ "1" + "," + //2. продажа/##CHR(13)##//##CHR(10)##/ "1" + "," + //3. возврат/##CHR(13)##//##CHR(10)##/ "1" + "," + //4. отрицательные остатки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "1", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "0", "1" ) ) + "," + //5. без ввода количества/##CHR(13)##//##CHR(10)##/ "1" + "," + //6. списание остатков/##CHR(13)##//##CHR(10)##/ "1" + "," + //7. редактирование цены/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "0", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "1", "0" ) ) + "," + //8. ввод количества вручную/##CHR(13)##//##CHR(10)##/ "," + //9. печатать в чеке/##CHR(13)##//##CHR(10)##/ "," + //10. наливаемый товар/##CHR(13)##//##CHR(10)##/ "," + //11. скидки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( mEnterPrice, "1", "" ) + "," + //12. запрос цены/##CHR(13)##//##CHR(10)##/ "," + //13. запрос штрихкода/##CHR(13)##//##CHR(10)##/ "," + //14. округление/##CHR(13)##//##CHR(10)##/ ","; //15. деление упаковки /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mActionPriz = IIF( f_action == 0, IIF( maxdiscount == -1, "", ALLTRIM( STR( maxdiscount, 16, 2 ) ) ), "0");/##CHR(13)##//##CHR(10)##/ // Остаток и PLU/##CHR(13)##//##CHR(10)##/ mTmcSaldo = ALLTRIM( STR( kolp, 10, 3 ) );/##CHR(13)##//##CHR(10)##/ mPlu = ALLTRIM( plu );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mDsc_value = "";/##CHR(13)##//##CHR(10)##/ mVtype = "";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Если у товара указан код скидки, то надо вычислить ее значение/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( discount ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если надо вычислить значение скидки, то вычисляем ее/##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( value );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Вычисляем и подставляем Коды Групп печати/##CHR(13)##//##CHR(10)##/ IF ( !_ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( mFr_code ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ kodGrPintChek = mFr_code;/##CHR(13)##//##CHR(10)##/ kodGrPintCopy = mFr_code;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" //1. Идентификатор товара (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + mBarcode + ";" //2. Штрихкод (Строка 1024)/##CHR(13)##//##CHR(10)##/ + STDE( mName, 100 ) + ";" //3. Наименование (Строка 128)/##CHR(13)##//##CHR(10)##/ + STDE( mCname, 100 ) + ";" //4. Наименование для печати (Строка 128)/##CHR(13)##//##CHR(10)##/ + mCena + ";" //5. Цена (Дробное)/##CHR(13)##//##CHR(10)##/ + mTmcSaldo + ";" //6. Остаток (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + ";" //7. - (Целое)/##CHR(13)##//##CHR(10)##/ + mFlags + ";" //8. флаги (Строка)/##CHR(13)##//##CHR(10)##/ + mMin_cena + ";" //9. минимальная цена (Дробное)/##CHR(13)##//##CHR(10)##/ + mStore_period + ";" //10. срок годности (Дата)/##CHR(13)##//##CHR(10)##/ + mAspect_sch + ";" //11. код схемы разрезов (Целое)/##CHR(13)##//##CHR(10)##/ + mAspect_var + ";" //12. вариант использования разрезов (Целое)/##CHR(13)##//##CHR(10)##/ + rsubject + ";" //13. признак предмета расчета (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //14. коэффициент штрихкода (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + ";" //15. - (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + mParent + ";" //16. Код родительской группы (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + "1;" //17. товар или группа: 0 - группа, 1 - товар (Целое 1)/##CHR(13)##//##CHR(10)##/ + ";" //18. - (Целое)/##CHR(13)##//##CHR(10)##/ + "0;" //19. - (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //20. серия (Строка 100)/##CHR(13)##//##CHR(10)##/ + ";" //21. сертификат (Строка 100)/##CHR(13)##//##CHR(10)##/ + ";" //22. - (Целое)/##CHR(13)##//##CHR(10)##/ + mKodn + ";" //23. Код налоговой группы (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //24. Код весов с ПЭ (Целое, по умолчанию = 0)/##CHR(13)##//##CHR(10)##/ + mPlu + ";" //25. Код товара в весах ПЭ. (Целое, max = 999999999)/##CHR(13)##//##CHR(10)##/ + mArticle + ";" //26. Артикул (Строка 20)/##CHR(13)##//##CHR(10)##/ + mVtype + ";" //27. Тип скидки (Целое, 0-процентная, м.б. только %-я)/##CHR(13)##//##CHR(10)##/ + mDsc_value + ";" //28. Значение скидки (строка 100)/##CHR(13)##//##CHR(10)##/ + mActionPriz + ";" //29. Максимальная скидка (Дробное)/##CHR(13)##//##CHR(10)##/ + mCheckPrinter + ";" //30. Код группы печати (Целое, особенности в рук.интегратора)/##CHR(13)##//##CHR(10)##/ + mImage_path + ";" //31. Файл с картинкой (Строка) *.bmp, *.jpg, *.jpeg, *.wmf, *.ico, *.emf, *.svg, *.png/##CHR(13)##//##CHR(10)##/ + mNote + ";" //32. Описание (строка)/##CHR(13)##//##CHR(10)##/ + ";" //33. Кратность количества (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + "0;" //34. Код ценника (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //35. Тип вознаграждения (Целое). 0- процентное, 1- суммовое. По умолчанию =0/##CHR(13)##//##CHR(10)##/ + ";" //36. Значение вознаграждения (Дробное)/##CHR(13)##//##CHR(10)##/ + mKkm_section + ";" //37. Номер секции ККМ (Целое, max = 99). По умолчанию =0 /##CHR(13)##//##CHR(10)##/ + ";" //38. ГТД (строка 100)/##CHR(13)##//##CHR(10)##/ + kodGrPintChek + ";" //39. Код группы печати чека (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintCopy + ";" //40. Код группы печати копии (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintInvoice + ";" //41. Код группы печати счета (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintMark + ";" //42. Код группы печати марки (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //43. Код предприятия (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //44. - (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //45. Номер сообщения в весах с ПЭ (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //46. - /##CHR(13)##//##CHR(10)##/ + vizualmodif + ";" //47. Значение флага "Визуальный выбор модификаторов при регистрации" (Целое)/##CHR(13)##//##CHR(10)##/ + ЛеваяГраница + ";" //48. Левая граница допустимого суммарного удельного веса модификаторов (Целое)/##CHR(13)##//##CHR(10)##/ + ПраваяГраница + ";" //49. Правая граница допустимого суммарного удельного веса модификаторов (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //50. Текстовое сообщение для весов с ПЭ (строка)/##CHR(13)##//##CHR(10)##/ + ";" //51. -/##CHR(13)##//##CHR(10)##/ + mF_marknotrequire + ";"; //52. Значение флага «Разрешить регистрацию без штрихкода маркировки» (Целое)/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( mAlco OR ПивнаяПродукция )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += mNNVid + ";" //53. Код вида алкогольной / спиртосодержащей продукции Значение по умолчанию: 10. (Целое)/##CHR(13)##//##CHR(10)##/ + mVolume + ";" //54. Емкость тары, л Значение по умолчанию: 1,000. (Дробное 10.6)/##CHR(13)##//##CHR(10)##/ + mMarkGroup + ";" //55. Тип номенклатуры (Целое)/##CHR(13)##//##CHR(10)##/ + ЕСЛИ( ПивнаяПродукция, "1", "0" ) + ";" //56. Маркировка алкогольной продукции (Целое)/##CHR(13)##//##CHR(10)##/ + mAProc + ";"; //57. Крепость алкогольной продукции, % (Дробное). Значение по умолчанию: 0,1/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += ";" //53. Код вида алкогольной / спиртосодержащей продукции Значение по умолчанию: 10. (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //54. Емкость тары, л Значение по умолчанию: 1,000. (Дробное 10.6)/##CHR(13)##//##CHR(10)##/ + mMarkGroup + ";" //55. Тип номенклатуры (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //56. Маркировка алкогольной продукции (Целое)/##CHR(13)##//##CHR(10)##/ + ";"; //57. Крепость алкогольной продукции, % (Дробное). Значение по умолчанию: 0,1/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка += mPaytype + ";" //58.Признак способа расчета: 1 – аванс; 2 – полный расчет. Значение по умолчанию: 2./##CHR(13)##//##CHR(10)##/ + ЕСЛИ( !ПУСТО(mAgentDetailsCode), mAgentDetailsCode, "" ) + ";" //59. Код реквизитов агента (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //60. Сумма акциза (Дробное)/##CHR(13)##//##CHR(10)##/ + ";" //61. Код страны происхождения товара (Строка 3)/##CHR(13)##//##CHR(10)##/ + ";" //62. Номер таможенной декларации (Строка 32)/##CHR(13)##//##CHR(10)##/ + ";" //63. Наименование лотереи (Целое)/##CHR(13)##//##CHR(10)##/ + mSIZmark + ";" //64. Код вида номенклатурной классификации (EAN-13) (Строка 13)/##CHR(13)##//##CHR(10)##/ + ";" //65. Проверка соответствия товара штрихкоду маркировки (Целое). 0 – по штрихкодам товара; 1 – по штрихкоду регистрации./##CHR(13)##//##CHR(10)##/ + mffdcode; //66. Мера количества предмета расчета (Целое)/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Отмечаем в таблице штриховых кодов, что товар был выгружен/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ШТРИХКОДЫ + " SET used= 1 WHERE code= ''" + code + "''" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ("СписокТоваров");/##CHR(13)##//##CHR(10)##/ИНДИКАТОР();/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ();/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',213.00000000,'//Выгрузка штриховых кодов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Штриховые коды идут в конце файла, после всех товаров /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDBARCODES" );--DISTINCT /##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT barcode, code, koef, aspectlist FROM " + ШТРИХКОДЫ + " /##CHR(13)##//##CHR(10)##/ WHERE used = 1 AND barcode <> '''' GROUP BY barcode, code, koef, aspectlist ", "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокШтрихКодов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( barcode ) + ";" + ALLTRIM( code ) + ";" + ALLTRIM( aspectlist ) + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ, ALLTRIM( STRTRAN( VAL( STR( koef, 7, 4 ) ), ",", ALLTRIM( delimiter ) ) ), "1" ) + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',214.00000000,'//Завершение выгрузки товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //Выгрузка модификаторов и групп модификаторов товаров в ККМ./##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMODIFIERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Сначала группы/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code, name, identity_column, f_singleModifier, f_repeateModifier /##CHR(13)##//##CHR(10)##/ FROM sprnnlink_groups/##CHR(13)##//##CHR(10)##/ WHERE nn = '''' AND parent= 0", "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокГруппКомплектации" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ) + 1000000000 ) ) + ";;1;" + STDE( name ) + ";" + STDE( name ) + /##CHR(13)##//##CHR(10)##/ ";;;" + ЕСЛИ( f_singleModifier, "1", "0" ) + ";" + ЕСЛИ( f_repeateModifier, "1", "0" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь второй уровень групп/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code, name, identity_column, f_singleModifier, f_repeateModifier/##CHR(13)##//##CHR(10)##/ FROM sprnnlink_groups/##CHR(13)##//##CHR(10)##/ WHERE nn = '''' AND parent= " + СписокГруппКомплектации.identity_column, "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокГруппКомплектацииУровень2" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ) + 1000000000 ) ) + ";" + ALLTRIM( STR( VAL( СписокГруппКомплектации.code ) + 1000000000 ) ) + ";1;" + STDE( name ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( name ) + ";;;" + ЕСЛИ( f_singleModifier, "1", "0" ) + ";" + ЕСЛИ( f_repeateModifier, "1", "0" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь третий уровень групп/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code, name, identity_column, f_singleModifier, f_repeateModifier /##CHR(13)##//##CHR(10)##/ FROM sprnnlink_groups/##CHR(13)##//##CHR(10)##/ WHERE nn = '''' AND parent= " + СписокГруппКомплектацииУровень2.identity_column, "СписокГруппКомплектацииУровень3" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектацииУровень3" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокГруппКомплектацииУровень3" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ) + 1000000000 ) ) + ";" + ALLTRIM( STR( VAL( СписокГруппКомплектацииУровень2.code ) + 1000000000 ) ) + ";1;" + /##CHR(13)##//##CHR(10)##/ STDE( name ) + ";" + STDE( name ) + ";;;" + ЕСЛИ( f_singleModifier, "1", "0" ) + ";" + ЕСЛИ( f_repeateModifier, "1", "0" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокГруппКомплектацииУровень3" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь саму комплектацию/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT sprres.maincode, nnlinks.group_, nnlinks.kolp_1, sprres.name, nnlinks.identity_column/##CHR(13)##//##CHR(10)##/ FROM sprnnlinks nnlinks/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres sprres ON nnlinks.nn_r = sprres.code /##CHR(13)##//##CHR(10)##/ WHERE nnlinks.nn = '''' AND nnlinks.group_ <> ''''", "СписокКомплектации" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокКомплектации" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( identity_column ) ) + ";" + ALLTRIM( STR( VAL( group_ ) + 1000000000 ) ) + ";0;" + STDE( name ) + ";" + STDE( name ) + ";"+/##CHR(13)##//##CHR(10)##/ ALLTRIM( STR( VAL( maincode ) ) ) + ";" + ALLTRIM( STR( kolp_1, 10, 3 ) ) + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь связи групп и товаров/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMODIFIERLINKS" );/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT sprres.maincode, nnlinks.group_/##CHR(13)##//##CHR(10)##/ FROM sprnnlinks nnlinks/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres sprres ON nnlinks.nn = sprres.code /##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " temp ON temp.nn = sprres.code/##CHR(13)##//##CHR(10)##/ WHERE nnlinks.nn_r = '''' AND nnlinks.group_ <> ''''", "СписокКомплектации" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокКомплектации" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( group_ ) + 1000000000 ) ) + ";" + ALLTRIM( STR( VAL( maincode ) ) );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Если производим выгрузку из плана-меню, то формируем строки для меню/##CHR(13)##//##CHR(10)##/ IF ( КОДДОКУМЕНТА == "054" OR ЕСЛИ( !ПУСТО( СПИСОКДОКУМЕНТОВ ), ЗАПРОС( "SELECT code FROM " + СПИСОКДОКУМЕНТОВ + " WHERE code = ''054''" ) == "054", false ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 1 ] = "Понедельник";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 2 ] = "Вторник";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 3 ] = "Среда";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 4 ] = "Четверг";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 5 ] = "Пятница";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 6 ] = "Суббота";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 7 ] = "Воскресенье";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Добавляем команду удаления меню из Фронтол/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СПИСОКДОКУМЕНТОВ ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLMENUS" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT ic FROM " + СПИСОКДОКУМЕНТОВ + " WHERE code = ''054''", "СписокДокументов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT " + ИДДОКУМЕНТА + " AS ic", "СписокДокументов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE( !КОНЕЦКОНТЕКСТА( "СписокДокументов" ) ) /##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИДДОКУМЕНТА = СписокДокументов.ic;/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT spr.date, sprnn.maincode /##CHR(13)##//##CHR(10)##/ FROM spr054 spr/##CHR(13)##//##CHR(10)##/ INNER JOIN spec054 spec ON spec.ic = spr.identity_column/##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON spec.nn = sprnn.nn/##CHR(13)##//##CHR(10)##/ WHERE spr.identity_column= " + ИДДОКУМЕНТА, "ПланМеню" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ НОМЕРДНЯ = ДЕНЬНЕДЕЛИ( ПланМеню.date );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMENUS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( НОМЕРДНЯ ) + ";Меню на " + ДНИНЕДЕЛИ[ НОМЕРДНЯ ] + ";Меню на " + ДНИНЕДЕЛИ[ НОМЕРДНЯ ] );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMENUPERIODS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( НОМЕРДНЯ ) + ";1;" + ДНИНЕДЕЛИ[ НОМЕРДНЯ ] + ";;;;;;" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 1, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 2, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 3, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 4, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 5, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 6, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 7, "1", "0" ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMENULINKS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "ПланМеню" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( НОМЕРДНЯ ) + ";1;" + ПланМеню.maincode );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "ПланМеню" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "ПланМеню" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокДокументов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ } // Окончание выгрузки из Плана меню/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгрузка алкокодов /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDALCCODES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT sprnn.maincode, egais.alcocode,/##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprnn.nnvid ) AS alcotype/##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON sprnn.maincode = t1.code/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_egais egais ON egais.code = sprnn.nn/##CHR(13)##//##CHR(10)##/ WHERE egais.alcocode <> ''''", "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАлкокодов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, СписокАлкокодов.maincode + ";" + СписокАлкокодов.alcocode );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬСПЕЦЦЕНЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгрузка спец цен из переоценки/##CHR(13)##//##CHR(10)##/ // Выводим все переоценки, для которых еще не закончилась акция/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT * FROM spr005 /##CHR(13)##//##CHR(10)##/ WHERE DATEDIFF( day, endaction, GETDATE( ) ) <= 0 AND EXISTS( SELECT * FROM reg008 WHERE code =''005'' AND ic = spr005.identity_column ) /##CHR(13)##//##CHR(10)##/ ORDER BY identity_column", "Переоценка" );/##CHR(13)##//##CHR(10)##/ // Правило объединения - максимальная скидка/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$CHANGEMARKETINGACTIONSUNION" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "2;2" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "Переоценка" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ КОДАКЦИИ = STR( 1000000000 + Переоценка.identity_column );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT sprnn.maincode AS subcode, sprnn.nngroup, sprnn.d_code AS aspect, spec.cena, sprnn.f_subres, sprnn_main.maincode AS code /##CHR(13)##//##CHR(10)##/ FROM spec005 spec /##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON spec.nn = sprnn.nn/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprnn sprnn_main ON sprnn.subcode = sprnn_main.nn /##CHR(13)##//##CHR(10)##/ WHERE spec.cena > 0 AND spec.ic = " + Переоценка.identity_column, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокТоваров" ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "Переоценка" );/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КОДАКЦИИ + ";" + DTOC( Переоценка.date ) + ";" + DTOC( Переоценка.endaction ) + ";;;СПЕЦЦЕНЫ;СПЕЦЦЕНЫ;1;0;1;1;1" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем список товаров и разрезов/##CHR(13)##//##CHR(10)##/ Строка = "";/##CHR(13)##//##CHR(10)##/ Строка2 = "";/##CHR(13)##//##CHR(10)##/ СписокХар = "";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAspectList = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /////////////////////////////////////////////////////////////////////////////////##CHR(13)##//##CHR(10)##/ // Для разреза товара необходимо сформировать список используемых разрезов/##CHR(13)##//##CHR(10)##/ // Формируем список разрезов через запятую/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.f_subres AND !ПУСТО( СписокТоваров.code ) AND f_razr AND ( aspecttype == 2 OR aspecttype == 0 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоваров.nngroup + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ mAspectValue= ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоваров.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ mAspectList = mAspectList + IIF( !EMPTY( mAspectList ), "#", "" ) + mAspectValue;/##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + mAspectList;/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ALLTRIM( СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" );/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ALLTRIM( ЕСЛИ( СписокТоваров.f_subres, СписокТоваров.subcode, СписокТоваров.code ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка2 += ЕСЛИ( !ПУСТО( Строка2 ), CHR( 149 ), "" ) + STR( СписокТоваров.cena, 16, 2 );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КОДАКЦИИ + ";" + КОДАКЦИИ +";СПЕЦЦЕНЫ;СПЕЦЦЕНЫ;8;" + Строка + ";" + СписокХар + ";" + Строка2 );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "Переоценка" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "Переоценка" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬКЛАССИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //Выгрузка групп ресурсов как классификаторов товаров в ККМ./##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Сначала группы ресурсов/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name /##CHR(13)##//##CHR(10)##/ FROM sprres_g /##CHR(13)##//##CHR(10)##/ WHERE folder=0 and notavail=0 and f_nokkm=0", "СписокГруппРесурсов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокГруппРесурсов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокГруппРесурсов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ))) + ";;0;" + STDE( name ) + ";" + STDE( name );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокГруппРесурсов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь связи групп ресурсов и товаров/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERLINKS" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT t.code, t.nngroup, t.f_subres/##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t/##CHR(13)##//##CHR(10)##/ WHERE t.f_subres = 0 AND t.nngroup <> '''' AND t.cena >" + IIF( !ТОВАРЫБЕЗЦЕНЫ, "", "=" ) + " 0", "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокКлассификаторов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( nngroup ))) + ";1;" + ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬПРАЙСЛИСТЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, clev, name FROM sprccnames WHERE clev <> (SELECT clev FROM sprskl WHERE code = ( SELECT sklad FROM sprequipment where code = ''" + КОДОБОРУДОВАНИЯ + "'' ) )", "СписокПрайсЛистов");/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокПрайсЛистов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDPRICELISTS" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокПрайсЛистов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = STR(VAL(СписокПрайсЛистов.code)) + ";" + LEFT(СписокПрайсЛистов.name, 100) + ";" + LEFT(СписокПрайсЛистов.name, 100);/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ ПЕРЕЙТИВНАЧАЛО("СписокПрайсЛистов");/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА("СписокПрайсЛистов") )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, dbo.fn_calcclev_cena(nn, GETDATE(),''" + СписокПрайсЛистов.clev + "'', ''001'') AS cena FROM "+ ТОВАРЫ, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (!СОХРАНЯТЬТОВАРЫ)/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEPRICELISTPRICES" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = STR(VAL(СписокПрайсЛистов.code)) + ";" + СписокТоваров.code + ";;;;;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDPRICELISTPRICES" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ПЕРЕЙТИВНАЧАЛО( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( !ТОВАРЫБЕЗЦЕНЫ AND VAL( СписокТоваров.cena ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка = STR(VAL(СписокПрайсЛистов.code)) + ";" + СписокТоваров.code + ";;;;;;" + СписокТоваров.cena;/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФАЙЛЗАКРЫТЬ( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',216.00000000,'//Начало выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления различных объектов, если установлены галочки/##CHR(13)##//##CHR(10)##/// Дисконтные карты/##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИКАРТ ) ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLCCARDDISCS" );/##CHR(13)##//##CHR(10)##/// Клиенты, владельцы дисконтных карт/##CHR(13)##//##CHR(10)##///IF ( ПРИЗНАКОЧИСТКИКЛИЕНТОВ ) ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLCLIENTDISCS" );/##CHR(13)##//##CHR(10)##/// Так как все загружается через маркетинговые акции, то предварительно их удаляем/##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИСХЕМ OR ПРИЗНАКОЧИСТКИСТАВОК OR ПРИЗНАКОЧИСТКИОБЪЕКТОВ ) //OR ТИПВЫГРУЗКИ == "СКИДКИ" ) /##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',222.00000000,'//Выгрузка дисконтных карт в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы со списком карт/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + КАРТЫ, "СписокКарт" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCCARDDISCS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКарт" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ mParent = IIF( EMPTY( card_type ), "1", ALLTRIM( card_type ) );/##CHR(13)##//##CHR(10)##/ mState = IIF( block, "0", "1" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mCard_type = ALLTRIM( card_type );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Обороты по карте и количество посещений расчитываются системой перед началом выгрузки/##CHR(13)##//##CHR(10)##/ mCardSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/ mCardCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( mValue, "C" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = mValue;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mCardn = STRTRAN( cardn, ";", CHR( 164 ) ); /##CHR(13)##//##CHR(10)##/ mStart_date = IIF( EMPTY( str_date ), "", DTOC( str_date ) );/##CHR(13)##//##CHR(10)##/ mEnd_date = IIF( EMPTY( end_date ), "", DTOC( end_date ) );/##CHR(13)##//##CHR(10)##/ // Формируем строку для записи в файл/##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + mParent + ";" + mCardn + ";" + mStart_date + ";" + mEnd_date + ";" +/##CHR(13)##//##CHR(10)##/ mState + ";" + mVtype + ";" + mDsc_value + ";" + mType_ + ";;;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если есть объекты скидок с картами, то формируем классификаторы карт/##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц ОБЪЕКТЫ и СКИДКИ И ТОВАРОВ/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT DISTINCT sprschem.code, temp.discount, CASE WHEN temp.card <> '''' THEN sprschem.code ELSE '''' END AS classcode, sprschem.name/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON temp.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code", "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКлассификаторов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокКлассификаторов.classcode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокКлассификаторов.code ) ) ) + ";;0;" + STDE( СписокКлассификаторов.name ) + ";" + STDE( СписокКлассификаторов.name ) );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT spr.cardn/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmcard spr ON spr.code = temp.card/##CHR(13)##//##CHR(10)##/ WHERE temp.schem = ''" + СписокКлассификаторов.code + "''", "СписокКартСхемы" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERLINKS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокКартСхемы" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокКартСхемы.cardn ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокКлассификаторов.code ) ) )+ ";3;" + STDE( СписокКартСхемы.cardn ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокКартСхемы" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКартСхемы" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ( "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',223.00000000,'//Выгрузка папок клиентов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками клиентов/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + ПАПКИКЛИЕНТОВ, "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ПапкиКлиентов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( ABS( ic ) + 1000000000 ) );/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1) ), "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если надо вычислять занчение скидки в момент выгрузки, то вычисляем его/##CHR(13)##//##CHR(10)##/ IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";1;;;;;;;;;;;;;;;;" + mDsc_value + ";" + mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',224.00000000,'//Выгрузка клиентов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с клиентами/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + КЛИЕНТЫ, "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКлиентов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( EMPTY( parent ),0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/ mSex = ALLTRIM( STR( sex ) );/##CHR(13)##//##CHR(10)##/ mZdate = "";/##CHR(13)##//##CHR(10)##/ mIndex = "";/##CHR(13)##//##CHR(10)##/ mCity = "";/##CHR(13)##//##CHR(10)##/ mWeb = "";/##CHR(13)##//##CHR(10)##/ mInn = "";/##CHR(13)##//##CHR(10)##/ mDoc = "";/##CHR(13)##//##CHR(10)##/ mOkpo = "";/##CHR(13)##//##CHR(10)##/ mOkpd = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Обороты и счетчики посещений уже расчитаны в системе до начала выгрузки/##CHR(13)##//##CHR(10)##/ mSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/ mCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mNote = LEFT( ALLTRIM( STRTRAN( note, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mTelephon = LEFT( ALLTRIM( STRTRAN( telefon, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mAddress = LEFT( ALLTRIM( STRTRAN( address, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mEmail = LEFT( ALLTRIM( STRTRAN( email, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mBirthdate = IIF( EMPTY( birthdate ), "", DTOC( birthdate ) );/##CHR(13)##//##CHR(10)##/ mRdate = DTOC( DATE( ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";0;" + mNote + ";" +/##CHR(13)##//##CHR(10)##/ mSex + ";" + mZdate + ";" + mBirthdate + ";" + mRdate + ";" + mIndex + ";" + /##CHR(13)##//##CHR(10)##/ mCity + ";" + mAddress + ";" + mEmail + ";" + mWeb + ";" + mTelephon + ";" +/##CHR(13)##//##CHR(10)##/ mInn + ";" + mDoc + ";" + mOkpo + ";" + mOkpd + ";" + mDsc_value + ";" + /##CHR(13)##//##CHR(10)##/ mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',225.00000000,'//Выгрузка дисконтных карт клиентов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц КЛИЕНТЫ и КАРТЫ/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT cln.code AS clientcode, crd.code AS cardcode, crd.card_type/##CHR(13)##//##CHR(10)##/ FROM " + КЛИЕНТЫ + " cln/##CHR(13)##//##CHR(10)##/ INNER JOIN " + КАРТЫ + " crd ON crd.client = cln.code", "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт клиентов/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTCCARDS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКартКлиентов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mClientCode = ALLTRIM( STR( VAL( clientcode ) ) );/##CHR(13)##//##CHR(10)##/ mCardCode = ALLTRIM( STR( VAL( cardcode ) ) );/##CHR(13)##//##CHR(10)##/ mParent = IIF( EMPTY( card_type ), "1", ALLTRIM( card_type ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/ Строка = mClientCode + ";" + mParent + ";" + mCardCode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',242.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается в случае файлового обмена для определения количества файлов для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое равное количеству найденых файлов для загрузки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Необходимо посчитать сколько есть файлов для загрузки /##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КоличествоФайлов = ФайлСписок( СжатьПробелы( ИмяФайла ), "ИменаФайловДляЗагрузки");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN КоличествоФайлов;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',243.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ИменаФайловДляЗагрузки[ НомерФайла - 1 ];',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',244.00000000,'//Проверка возможности загрузки файла./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, проверку которого необходимо произвести./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения возможности загрузки указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной проверки. Если обработка возвращает ЛОЖЬ, то загрузка файла с данными не производится./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Возвращаем ИСТИНУ, если не стоит признак f_checkdone, иначе открываем файл и проверяем первый символ/##CHR(13)##//##CHR(10)##/checkResult = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьПризнакЗагрузки = ЕСЛИ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ, f_checkdone, ЗАПРОС("SELECT f_checkdone_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПроверятьПризнакЗагрузки )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Файл = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ checkResult = ФайлПрочитать( Файл, "S" ) == "#";/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( Файл );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN checkResult;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',246.00000000,'PUBLIC ИСТОЧНИКДАТЫ, ДЕЛИТЬПОККМ, ДЕЛИТЬПОКС, СКЛАДЫИЗГРУПП, ФИРМЫИЗГРУПП, СПИСОКФР, ККМ_КОДОБОРУДОВАНИЯ,/##CHR(13)##//##CHR(10)##/КОДФРОНТ2, КОДФРОНТ3, КОДФРОНТ4, КОДФРОНТ5, КОДФРОНТ6;/##CHR(13)##//##CHR(10)##///Загрузка данных./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, загрузку которого необходимо произвести. Данный параметр передается только при файловом обмене./##CHR(13)##//##CHR(10)##///Обработка вызывается для загрузки данных./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной загрузки. иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ЗАГРУЖАТЬЧЕКИ = ПЕРЕМЕННАЯ("_ФРОНТОЛ_ЗАГРУЖАТЬЧЕКИ", false);/##CHR(13)##//##CHR(10)##/IF ( ЗАГРУЖАТЬЧЕКИ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ККМ_КОДОБОРУДОВАНИЯ = КОДОБОРУДОВАНИЯ;/##CHR(13)##//##CHR(10)##/ IF ( !EQUIPMENT.ККМ_ЗагрузитьТранзакцииВЧеки( ККМ_КОДОБОРУДОВАНИЯ, ИмяФайла, sklad ) )/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ("Произошла ошибка при загрузке чеков из Фронтол", "Загрузка чеков из Фронтол");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //загружаем ДКС из чеков/##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТЫИЗЧЕКОВ", false ) AND !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ RETURN Сервис.РМКСоздатьДокументы( "", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТПРИАВТОМАТИЧЕСКОЙЗАГРУЗКЕ", true ) AND АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Индикатор( );/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ RETURN true; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА = ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ТИПДОКУМЕНТАТОЛЬКОПОФОРМЕОБМЕНА", false );/##CHR(13)##//##CHR(10)##/ИМЯОБОРУДОВАНИЯ = ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( "Обработка ККМ """ + ИМЯОБОРУДОВАНИЯ + """. Файл " + ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/fileHandle = ФАЙЛОТКРЫТЬ( ИмяФайла, 0, 1 );/##CHR(13)##//##CHR(10)##/kkmsklad = sklad;/##CHR(13)##//##CHR(10)##/sklad_d = "";/##CHR(13)##//##CHR(10)##/firm = "";/##CHR(13)##//##CHR(10)##/processCount = 0;/##CHR(13)##//##CHR(10)##/итого = 0.00;/##CHR(13)##//##CHR(10)##/docid = 0;/##CHR(13)##//##CHR(10)##/_ERRORDESCRIPTION = "";/##CHR(13)##//##CHR(10)##/КодКассы = КодОборудования;/##CHR(13)##//##CHR(10)##/РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ_ФРОНТОЛ52" ) == "L" )/##CHR(13)##//##CHR(10)##/ РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ = _РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ_ФРОНТОЛ52;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##///------ Не удалось открыть файл - выходим/##CHR(13)##//##CHR(10)##/IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось открыть файл ''" + ИмяФайла + "'' загрузки для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///записываем символ @ в первую строку - признак того, что файл загружен/##CHR(13)##//##CHR(10)##/ЕстьПризнакЧтения = ФайлПрочитать( fileHandle, "S" ) == "#";/##CHR(13)##//##CHR(10)##/IF ( ЕстьПризнакЧтения )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛУСТАНОВИТЬУКАЗАТЕЛЬ( fileHandle, 0, 0 );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( fileHandle, "@" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок = ФайлКоличествоСтрок( fileHandle );/##CHR(13)##//##CHR(10)##/Индикатор( "Загрузка данных", КоличествоСтрок );/##CHR(13)##//##CHR(10)##/КоличествоСтрок = 0;/##CHR(13)##//##CHR(10)##/tranzDate = ""; // Дата транзакции/##CHR(13)##//##CHR(10)##/tranzTime = ""; // Время транзакции/##CHR(13)##//##CHR(10)##/foundTranz = false; // Признак того, что нашли транзакции/##CHR(13)##//##CHR(10)##/client = ""; // Код клиента из чека/##CHR(13)##//##CHR(10)##/maxTranzCount = 0; // Будем хранить максимальный номер транзакции/##CHR(13)##//##CHR(10)##/identif = 0;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьКОДФР = !ПУСТО( ЗАПРОС( "SELECT ex_code + fr_list FROM sprequipment WHERE code = ''" + КодОборудования + "''" ) );/##CHR(13)##//##CHR(10)##/ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП = ЗАПРОС( "SELECT f_sklfromwaregrp FROM sprequipment WHERE code = ''" + КодОборудования + "''" );/##CHR(13)##//##CHR(10)##/БРАТЬСКЛАДЫИЗГРУПП = СКЛАДЫИЗГРУПП OR ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем контекст со списком ФР и юридическими лицами, которые привязаны к ФР/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT fr_code, firm FROM " + СПИСОКФР, "СписокФР" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/БылиТранзакцииПоФРВыбранномуВТО = FALSE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///установим указатель на начало файла/##CHR(13)##//##CHR(10)##/ФАЙЛУСТАНОВИТЬУКАЗАТЕЛЬ( fileHandle, 0, 0 ); /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !ФайлКонецФайла( fileHandle ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, "Обработано строк" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ string = ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------ Первые три строки - заголовок файла, он нам не интересен. В этих строках нет разделителей, поэтому будем пропускать по отсутствию точки с запятой/##CHR(13)##//##CHR(10)##/ IF ( ATC( string, ";", 1 ) == 0 OR ALLTRIM( string ) == "@" OR ALLTRIM( string ) == "#" )/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------ Если строка пустая - пропускаем ее/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( string ) ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Для соответствия номеров полей возвращаемым номерам слов - добавляем разделитель /##CHR(13)##//##CHR(10)##/ string = ";" + string;/##CHR(13)##//##CHR(10)##/ tranzCount = GetWord( string, ";", ";", 1 );/##CHR(13)##//##CHR(10)##/ tranzDate = GetWord( string, ";", ";", 2 );/##CHR(13)##//##CHR(10)##/ tranzTime = GetWord( string, ";", ";", 3 );/##CHR(13)##//##CHR(10)##/ tranzType = GetWord( string, ";", ";", 4 );/##CHR(13)##//##CHR(10)##/ POSNumber = VAL( GetWord( string, ";", ";", 5 ) );/##CHR(13)##//##CHR(10)##/ chequeNumber = STR( VAL( GetWord( string, ";", ";", 6 ) ) );/##CHR(13)##//##CHR(10)##/ Seller = STR( VAL( GetWord( string, ";", ";", 7 ) ) );/##CHR(13)##//##CHR(10)##/ wareCode = GetWord( string, ";", ";", 8 );/##CHR(13)##//##CHR(10)##/ AspectsList = GetWord( string, ";", ";", 9 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ AspectValue1 = GetWord( "," + AspectsList, ",", 1 );/##CHR(13)##//##CHR(10)##/ AspectValue2 = GetWord( "," + AspectsList, ",", 2 );/##CHR(13)##//##CHR(10)##/ AspectValue3 = GetWord( "," + AspectsList, ",", 3 );/##CHR(13)##//##CHR(10)##/ AspectValue4 = GetWord( "," + AspectsList, ",", 4 );/##CHR(13)##//##CHR(10)##/ AspectValue5 = GetWord( "," + AspectsList, ",", 5 );/##CHR(13)##//##CHR(10)##/ Price = STRTRAN( GetWord( string, ";", 10 ), ",","." );/##CHR(13)##//##CHR(10)##/ Quantity = STRTRAN( GetWord( string, ";", 11 ), ",","." );/##CHR(13)##//##CHR(10)##/ chequeType = STR( VAL( GetWord( string, ";", 13 ) ) );/##CHR(13)##//##CHR(10)##/ ecrSession = GetWord( string, ";", 14 );/##CHR(13)##//##CHR(10)##/ PriceWD = STRTRAN( GetWord( string, ";", 15 ), ",","." );/##CHR(13)##//##CHR(10)##/ SummWD = STRTRAN( GetWord( string, ";", 16 ), ",","." );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ecrNumber = ALLTRIM( STR( VAL( GetWord( string, ";", 17 ) ) ) );/##CHR(13)##//##CHR(10)##/ wareMark = STRTRAN( GetWord( string, ";", 18 ), CHR(164), ";" );/##CHR(13)##//##CHR(10)##/ sgtin = ALLTRIM( STRTRAN( GetWord( string, ";", 33 ), CHR(164), ";" ) );/##CHR(13)##//##CHR(10)##/ exmark = GetWord( string, ";", 34 );/##CHR(13)##//##CHR(10)##/ barcodereg = GetWord( string, ";", 19 );/##CHR(13)##//##CHR(10)##/ barcode = ЕСЛИ( !ПУСТО( exmark ), exmark, barcodereg );/##CHR(13)##//##CHR(10)##/ Summ = STRTRAN( GetWord( string, ";", 20 ), ",","." );/##CHR(13)##//##CHR(10)##/ currency = GetWord( string, ";", 21 );/##CHR(13)##//##CHR(10)##/ education = ЕСЛИ( !ПУСТО( VAL( GetWord( string, ";", 22 ) ) ), 1, 0 );/##CHR(13)##//##CHR(10)##/ dockIndCode = GetWord( string, ";", 23 );/##CHR(13)##//##CHR(10)##/ commentCode = GetWord( string, ";", 24 );/##CHR(13)##//##CHR(10)##/ universalNDOK = GetWord( string, ";", 26 );/##CHR(13)##//##CHR(10)##/ karta = "";/##CHR(13)##//##CHR(10)##/ documentClient = "";/##CHR(13)##//##CHR(10)##/ manager = GetWord( string, ";", 28 );/##CHR(13)##//##CHR(10)##/ warecode_org = warecode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( INLIST( VAL( tranzType ), 5, 9, 10, 15, 6, 16, 7, 17, 8, 18, 75, 85, 76, 86, 77, 87, 78, 88, 35, 36, /##CHR(13)##//##CHR(10)##/ 37, 38, 40, 41, 42, 43, 44, 45, 55, 56, 57, 49, 45, 82, 83, 84, 86, 87, 32, 33, 34, 80, 27 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Заменяем служебный символ на точку с запятой/##CHR(13)##//##CHR(10)##/ karta = STRTRAN( warecode, CHR( 164 ), ";" );/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//* IF ( СЖАТЬПРОБЕЛЫ( СТРОКА( ЧИСЛО( warecode ) ) ) <> СЖАТЬПРОБЕЛЫ( warecode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }*//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( VAL( AspectValue1 ) > 100000000 )/##CHR(13)##//##CHR(10)##/ AspectValue1= "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Если операция закрытие чека, или другая, подразумевающая наличие клиента, то /##CHR(13)##//##CHR(10)##/ //------- если карта не была указана, пытаемся ее определить по клиенту/##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( VAL( tranzType ), 55, 42, 56, 45, 49 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ documentClient = priceWD;/##CHR(13)##//##CHR(10)##/ priceWD = "";/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) AND VAL( documentClient ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE code = (SELECT card FROM sprmclient WHERE dbo.fn_chartoint( code ) = " + STR( VAL( documentClient ) ) + ")" );/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) )/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE client = " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ КодКассы = ЗАПРОС( "SELECT code FROM sprequipment WHERE ex_code = ''" + POSNumber + "''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КодКассы ) )/##CHR(13)##//##CHR(10)##/ kkmsklad = ЗАПРОС( "SELECT sklad FROM sprequipment WHERE code = ''" + КодКассы + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //-------- Если транзакцию с полученным номером уже обрабатывали, то пропускаем строку/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT CASE WHEN EXISTS(SELECT * FROM "+ ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE id = " + STR( VAL( tranzCount ) ) + " AND posnumber = " + STR( posNumber ) +") /##CHR(13)##//##CHR(10)##/ THEN 1 ELSE 0 END " ) == 1 ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Определяем, входит ли текущий ФР в список обрабатываемых ФР/##CHR(13)##//##CHR(10)##/ IF ( ПроверятьКОДФР AND !Найти( "СписокФР", "СписокФР.fr_code == ''" + UPPER( ALLTRIM( ecrNumber ) ) + "''" ) ) CONTINUE;/##CHR(13)##//##CHR(10)##/ БылиТранзакцииПоФРВыбранномуВТО = TRUE;/##CHR(13)##//##CHR(10)##/ //-------- Запоминаем /##CHR(13)##//##CHR(10)##/ firm = СписокФР.firm;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ tranzCount = VAL( tranzCount );/##CHR(13)##//##CHR(10)##/ maxTranzCount = MAX( maxTranzCount, tranzCount );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ docCode = "";/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ nn = warecode;/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ kolp = VAL( Quantity );/##CHR(13)##//##CHR(10)##/ summasale = VAL( SummWD );/##CHR(13)##//##CHR(10)##/ summa = VAL( Summ );/##CHR(13)##//##CHR(10)##/ cena = VAL( Price );/##CHR(13)##//##CHR(10)##/ nnname = "";/##CHR(13)##//##CHR(10)##/ ed = "";/##CHR(13)##//##CHR(10)##/ kodn = "";/##CHR(13)##//##CHR(10)##/ client = "";/##CHR(13)##//##CHR(10)##/ summabn = 0.00;/##CHR(13)##//##CHR(10)##/ //------- Анализируем тип транзакции и в зависимости от него выполняем разные действия/##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие смены. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ //------- Операция - Z-отчет. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ IF ( ( tranzType == "61" AND ИСТОЧНИКДАТЫ == 3 ) OR ( tranzType == "63" AND ИСТОЧНИКДАТЫ == 4 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ IF ( ИСТОЧНИКДАТЫ == 3 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND fr_code= " + ecrNumber );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие чека. Проставляем код клиента./##CHR(13)##//##CHR(10)##/ IF ( tranzType == "55" AND VAL( documentClient ) <> 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //IF ( chequeType <> "0" ) docid ++;/##CHR(13)##//##CHR(10)##/ //------- Определяем код клиента по доп. коду и проставляем его для всего чека./##CHR(13)##//##CHR(10)##/ client = ЗАПРОС( "SELECT code FROM sprclient WHERE dbo.fn_chartoint( ex_code )= " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET client = ''" + client + "'' WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Округления /##CHR(13)##//##CHR(10)##/ //IF ( tranzType == "55" )/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "49" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Необходимо рассчитать процент скидки/##CHR(13)##//##CHR(10)##/ СуммаЧека = ЗАПРОС( "SELECT SUM( summasale ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE " + ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND ecrNumber = " + STR( VAL( ecrNumber ) ) + " AND transtype IN ( 1, 2, 11, 12 ) ");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ЗНАК( СуммаЧека ) != ЗНАК( VAL( SummWD ) ) )/##CHR(13)##//##CHR(10)##/ SummWD = СТРОКА( -VAL( SummWD ), 16, 2 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ABS( СуммаЧека ) > ABS( VAL( SummWD ) ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Пересчитываем суммы в чеке/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summasale = summasale - " + СТРОКА( СуммаЧека - VAL( SummWD ), 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = /##CHR(13)##//##CHR(10)##/ (SELECT MIN( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND " +/##CHR(13)##//##CHR(10)##/ "ecrNumber = " + STR( VAL( ecrNumber ) ) + " AND " +/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND transtype IN ( 1, 2, 11, 12 ) )");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Операция - отмена чека /##CHR(13)##//##CHR(10)##/ IF ( tranzType == "56" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если данные содержат уникальный номер документа, то помечаем на удаление чек по этому номеру./##CHR(13)##//##CHR(10)##/ // Иначе просто по номеру чека/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET f_deleted = 1 WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND " + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- В транзакциях оплаты сумма записывается в поле 12/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "40" OR tranzType == "41" OR tranzType == "43" )/##CHR(13)##//##CHR(10)##/ Summa = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Безналичные оплаты/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "43" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( AspectsList <> "1" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Summabn = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##/ //------ Проставляем сумму безналичной оплаты у одной из записей о продаже/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summabn = summabn + " + STR( summabn, 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = (SELECT MAX( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 ) AND fr_code= " + ecrNumber + ")");/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ // Отмечаем особым образом транзакции для отображения в документе в виде без/нала /##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ("_ФРОНТОЛ_ДЕЛИТЬСТРОКИДКСПОВИДАМОПЛАТЫ", false ) )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET chequetype = " + VAL( aspectsList ) * 100 + " + chequetype WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 )");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- ПРОДАЖА/##CHR(13)##//##CHR(10)##/ // Для пропуска транзакций Вскрытие тары изменить строку на такую/##CHR(13)##//##CHR(10)##/ //IF ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" )/##CHR(13)##//##CHR(10)##/ //IF ( ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" OR tranzType == "30" OR tranzType == "31" ) AND chequeType != "18" AND chequeType != "25" )/##CHR(13)##//##CHR(10)##/ IF ( ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" OR tranzType == "30" OR tranzType == "31" ) AND chequeType != "18" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ docCodePredefined = IIF( chequeType <> "6" AND chequeType <> "14" AND chequeType <> "15" AND chequeType <> "16", "008", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCode = IIF( !ПУСТО( docCodePredefined ), docCodePredefined, /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ2, dockIndCode ) > 0, "007", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ3, dockIndCode ) > 0, "001", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ4, dockIndCode ) > 0, "002", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ5, dockIndCode ) > 0, "003", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ6, dockIndCode ) > 0, "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''14'' OR chequeType == ''15'', "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''16'', "007", "008" ))))))));/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //инвентаризация/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ2 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ2, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "007"; /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //приходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ3 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ3, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "001";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //расходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ4 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ4, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "002";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //списание, оприходование/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ5 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ5, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "003";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //внутреннее перемещение/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ6 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ6, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "019";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если не определили по кодам документов, то ставим тип "ДКС"/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( docCode ) )/##CHR(13)##//##CHR(10)##/ docCode = "008";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем строки из документа, отличного от ДКС, то разделим их по номерам документов/##CHR(13)##//##CHR(10)##/ IF ( docCode <> "008" )/##CHR(13)##//##CHR(10)##/ docid = chequeNumber;/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ docid = 0;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ nnname = IIF( docCode <> "008", "Операция по свободной цене", "Свободная продажа");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Пытаемся сопоставить товар с выбранными разрезами/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Определяем код головного товара/##CHR(13)##//##CHR(10)##/ warecode = ЗАПРОС("SELECT code FROM sprres WHERE ISNULL(LTRIM(RTRIM(maincode)), '''')=''" + wareCode + "''");/##CHR(13)##//##CHR(10)##/ aspCond1 = IIF( !EMPTY( AspectValue1 ) AND AspectValue1 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 1 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue1 + ")", "");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ aspCond2 = IIF( !EMPTY( AspectValue2 ) AND AspectValue2 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 2 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue2 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond3 = IIF( !EMPTY( AspectValue3 ) AND AspectValue3 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 3 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue3 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond4 = IIF( !EMPTY( AspectValue4 ) AND AspectValue4 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 4 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue4 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond5 = IIF( !EMPTY( AspectValue5 ) AND AspectValue5 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 5 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue5 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ nn = ЗАПРОС("SELECT sprres.maincode /##CHR(13)##//##CHR(10)##/ FROM sprres /##CHR(13)##//##CHR(10)##/ WHERE sprres.subcode= ''" + warecode + "'' " + aspCond1 + aspCond2 + aspCond3 + aspCond4 + aspCond5);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ store_period = 0;/##CHR(13)##//##CHR(10)##/ //------ Если получилось установить код товара, то определяем остальные его параметры /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( nn ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем настоящий nn из sprnn по maincode/##CHR(13)##//##CHR(10)##/ IF ( !ДОБАВИТЬКОНТЕКСТ( "SELECT s.code, s.cat, s.name, s.ed, s.kodn, s.weight, s.d_litr, s.ed_weight, /##CHR(13)##//##CHR(10)##/ s.edd_litr, ISNULL( d.sklad, '''' ) AS sklad, ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprres s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.group_ = d.code /##CHR(13)##//##CHR(10)##/ WHERE ISNULL( LTRIM( RTRIM( maincode ) ), '''' ) = ''" + ALLTRIM( nn ) + "''", "ТОВАРИНФО" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Закрываем файл, удаляем последний контекст и убираем лишние окна/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокФР" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАКРЫТЬ( fileHandle );/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Ошибка выполнение запроса ''" + _ERRORDESCRIPTION + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "001", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ s_code = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "002", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ weight_lab = IIF( !EMPTY( ТОВАРИНФО.weight ), ALLTRIM( STR( ТОВАРИНФО.weight, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.ed_weight), "" );/##CHR(13)##//##CHR(10)##/ volume_lab = IIF( !EMPTY( ТОВАРИНФО.d_litr), ALLTRIM( STR( ТОВАРИНФО.d_litr, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.edd_litr ), "" );/##CHR(13)##//##CHR(10)##/ weivol_lab = IIF( !EMPTY( weight_lab ), weight_lab, volume_lab );/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ) + IIF( !EMPTY( weivol_lab ), " " + weivol_lab, "" ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ТОВАРИНФО.ed;/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR !БРАТЬСКЛАДЫИЗГРУПП, kkmsklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ // Если был прочитан ШК, то ищем ЕД для этого ШК и пересчитываем количество/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( nn ) AND !ПУСТО( barcodereg ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT ed, koef, koef_c FROM sprres_ed WHERE code = ''" + nn + "'' AND barcode = ''" + STDF( barcodereg ) + "''", "ЕдиницаИнфо" );/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "ЕдиницаИнфо" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ed = ЕдиницаИнфо.ed;/##CHR(13)##//##CHR(10)##/ cena = cena * ЕдиницаИнфо.koef_c;/##CHR(13)##//##CHR(10)##/ kolp = kolp / ЕСЛИ( ЕдиницаИнфо.koef == 0, 1, ЕдиницаИнфо.koef );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "ЕдиницаИнфо" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Если пытались разобрать разрезы и не нашли нужного товара/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем начальное значение имени и прочие реквизиты из заголовочного товара/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT s.name, s.ed, s.kodn, ISNULL( d.sklad, '''' ) AS sklad, /##CHR(13)##//##CHR(10)##/ ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprnn s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.nngroup = d.code /##CHR(13)##//##CHR(10)##/ WHERE nn = ''" + ALLTRIM( warecode ) + "''", "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = "";/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ТОВАРИНФО.ed;/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR !БРАТЬСКЛАДЫИЗГРУПП, kkmsklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Пытаемся сформировать список разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT sprres_gdlist.f_num, spranalit.sprcode /##CHR(13)##//##CHR(10)##/ FROM sprnn /##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_gdlist ON sprnn.nngroup = sprres_gdlist.code /##CHR(13)##//##CHR(10)##/ INNER JOIN sprdim ON sprres_gdlist.d_code = sprdim.code /##CHR(13)##//##CHR(10)##/ INNER JOIN spranalit ON spranalit.code = SUBSTRING(sprdim.type_, 16, 3) /##CHR(13)##//##CHR(10)##/ WHERE sprnn.nn= ''" + warecode + "'' ", "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ // Проходим по списку разрезов и формируем название/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СПИСОКРАЗРЕЗОВ" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ aspcode = IIF( f_num == 1, AspectValue1, IIF( f_num == 2, AspectValue2, IIF( f_num == 3, AspectValue3, /##CHR(13)##//##CHR(10)##/ IIF( f_num == 4, AspectValue4, IIF( f_num == 5, AspectValue5, "0" ) ) ) ) );/##CHR(13)##//##CHR(10)##/ aspname = ЗАПРОС( "SELECT name FROM sprmain WHERE scode= ''" + СПИСОКРАЗРЕЗОВ.sprcode + "'' AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint( code )= " + STR( VAL( aspcode ) ) );/##CHR(13)##//##CHR(10)##/ nnname = ALLTRIM( nnname ) + '' / '' + ALLTRIM( aspname );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем постановку на кран, то необходимо сформировать документ для отправки в ЧЗ/##CHR(13)##//##CHR(10)##/ IF ( VAL( chequeType ) == 27 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ КомментарийПостановки = "Касса """ + ALLTRIM( ИМЯОБОРУДОВАНИЯ ) + """ | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzCount ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzDate ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzTime ) + " | " + /##CHR(13)##//##CHR(10)##/ "док. № " + ALLTRIM( chequeNumber );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДатаВремяПостановки = CTOD( tranzDate + " " + tranzTime, 4 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( store_period ) )/##CHR(13)##//##CHR(10)##/ expirationDate = ДОБАВИТЬДНИ( ДатаВремяПостановки, store_period );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ expirationDate = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ __SQL()/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ --добавим документ постановки на кран/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF NOT EXISTS( SELECT TOP 1 * FROM mark_reciept_spec spec/##CHR(13)##//##CHR(10)##/ INNER JOIN mark_reciept mark ON mark.identity_column = spec.ic/##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' /##CHR(13)##//##CHR(10)##/ AND mark.action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND mark.note = ''[[ КомментарийПостановки ]]'' ) /##CHR(13)##//##CHR(10)##/ BEGIN/##CHR(13)##//##CHR(10)##/ EXEC sp_rmk_markdoc ''[[ firm ]]'', ''[[ nn ]]'', ''[[ КомментарийПостановки ]]'', ''[[ STDF( sgtin ) ]]'', [[ kolp ]], ''[[ TTOC( expirationDate ) ]]'', ''beer''/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ --установим дату для созданного документа из транзакций и установим склад/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ UPDATE mark_reciept/##CHR(13)##//##CHR(10)##/ SET date = ''[[ TTOC( ДатаВремяПостановки ) ]]'',/##CHR(13)##//##CHR(10)##/ sklad = ''[[ sklad ]]''/##CHR(13)##//##CHR(10)##/ WHERE identity_column = ( SELECT TOP 1 ic FROM mark_reciept_spec spec /##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' )/##CHR(13)##//##CHR(10)##/ AND action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND note = ''[[ КомментарийПостановки ]]''/##CHR(13)##//##CHR(10)##/ END /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SQLERROR/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Ошибка при записи документа ""Постановка на кран"" с номером " + /##CHR(13)##//##CHR(10)##/ chequeNumber + " от " + tranzDate + " " + tranzTime + CHR(13) + CHR(10) +/##CHR(13)##//##CHR(10)##/ "Описание ошибки: " + _ERRORDESCRIPTION, "Загрузка Постановки на кран" ); /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь добавляем запись в таблицу ИМЯТАБЛИЦЫ/##CHR(13)##//##CHR(10)##/ sklad_d = "";/##CHR(13)##//##CHR(10)##/ IF ( docCode == "019" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ sklad_d = sklad;/##CHR(13)##//##CHR(10)##/ sklad = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем операцию постановки на кран (27) или снятия с крана (28), то пропускаем их загрузку в таблицу/##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( VAL( chequeType ), 27, 28 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ЗАПРОС( "INSERT INTO " + ИМЯТАБЛИЦЫ + "(id, date, transtype, posnumber, doccode, seller, waremark, chequeNumber, chequetype, /##CHR(13)##//##CHR(10)##/ ecrsession, infostr, ecrnumber, ndok, docid, note, inouttype, nn, s_code, nnname, ed, /##CHR(13)##//##CHR(10)##/ kodn, client, contract, kolp, barcode, gtd, ksnum, summasale, summabn, summa, cena, /##CHR(13)##//##CHR(10)##/ firm, sklad, mol, sklad_d, mol_d, kskod, fr_code, manager, warecode, aspectvalue1, equipment )/##CHR(13)##//##CHR(10)##/ VALUES ( /##CHR(13)##//##CHR(10)##/ " + STR( tranzCount ) + ", ''" + TTOC( date ) + "'', " + tranzType + ", " + STR( posNumber ) + ", ''" + doccode + "'',/##CHR(13)##//##CHR(10)##/ " + seller + ", ''" + STDF( wareMark, 250 ) + "'', " + chequeNumber + ", " + chequeType + ", " + STR( VAL( ecrSession ) ) + ", ''" + karta + "'',/##CHR(13)##//##CHR(10)##/ " + ecrNumber + ", ''" + universalNDOK + "'', " + docid + ", '''', '''', ''" + nn + "'', ''" + s_code + "'', ''" + STDF( nnname, 250 ) + "'',/##CHR(13)##//##CHR(10)##/ ''" + ed + "'', ''" + kodn + "'', ''" + client + "'', '''', " + STR( kolp, 16, 3 ) + ", ''" + STDF( barcode ) + "'', '''', /##CHR(13)##//##CHR(10)##/ " + STR( VAL( ecrSession ) ) + ", " + STR( summasale, 16, 3 ) + ", " + STR( summabn, 16 ,3 ) + ", " + STR( summa, 16 ,3 ) + ",/##CHR(13)##//##CHR(10)##/ " + STR( cena, 16 ,3 ) + ", ''" + firm + "'', ''" + sklad + "'', '''', ''" + sklad_d + "'', '''', ''" + kskod + "'', " + ecrNumber + ", /##CHR(13)##//##CHR(10)##/ ''" + manager + "'', ''" + warecode_org + "'', " + STR( VAL( AspectValue1 ) ) + ", ''" + КодКассы + "'' )" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ foundTranz = true;/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если указана конкретная дата для создания документов, то используем ее, предварительно записываем транзакции/##CHR(13)##//##CHR(10)##///IF ( ИСТОЧНИКДАТЫ == 2 )/##CHR(13)##//##CHR(10)##/// ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET date = ''" + TTOC( ДАТАДОКУМЕНТОВ ) + "''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///------- Если выбран вариант загрузки по дате закрытия смены, /##CHR(13)##//##CHR(10)##///------- и в списке транзакций остались транзакции без z_date, то /##CHR(13)##//##CHR(10)##///------- таким транзакциям проставляем текущую дату. Иначе, будет создано много документов/##CHR(13)##//##CHR(10)##/IF ( ИСТОЧНИКДАТЫ == 3 OR ИСТОЧНИКДАТЫ == 4 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( ДатаВремя( ) ) + "'' WHERE z_date= ''''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/Индикатор( );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Закрываем файл, удаляем последний контекст и убираем лишние окна/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокФР" );/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/// Ждем секунду, чтобы файл действительно закрылся. /##CHR(13)##//##CHR(10)##/Ожидание( 1000 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ФАЙЛУДАЛИТЬ( ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !БылиТранзакцииПоФРВыбранномуВТО ) MessageBox("В файле не обнаружены транзакции по ФР, указанным в карточке ТО");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',248.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_flag_in_alter = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "'' AND path_in_alter <> ''''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_flag_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = path_flag_in_alter;/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕСЛИ( !РучнойОбмен, ИмяФайлаФлага, "" );',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',200.00000000,'//Инициализация ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',226.00000000,'//Выгрузка объектов скидок в ККМ./##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/СООБЩЕНИЕ("ОБЪЕКТЫ " + ОБЪЕКТЫ);/##CHR(13)##//##CHR(10)##/СООБЩЕНИЕ("ТОВАРЫВОБЪЕКТАХ " + ТОВАРЫВОБЪЕКТАХ);/##CHR(13)##//##CHR(10)##/*//##CHR(13)##//##CHR(10)##/// Правило объединения - максимальная скидка/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$CHANGEMARKETINGACTIONSUNION" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "2;2" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///Выгрузка объектов скидок в ККМ. Выгружаются Акции и мероприятия/##CHR(13)##//##CHR(10)##/НомерПоПорядку = 1;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Сначала выгружаем ручные скидки/##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT sprschem.code, sprschem.start_date, sprschem.end_date, sprschem.name, dsc.ctext, dsc.code AS discount,/##CHR(13)##//##CHR(10)##/ dsc.type_, dsc.vtype, dsc.f_evaluate, dsc.value, dsc.value_min, dsc.value_max/##CHR(13)##//##CHR(10)##/ FROM sprmdiscount_schem sprschem /##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code and dsc.f_auto = 0", "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкцийРучныхСкидок" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) ) + ";" + DTOC( СписокАкцийРучныхСкидок.start_date ) + ";" + /##CHR(13)##//##CHR(10)##/ DTOC( СписокАкцийРучныхСкидок.end_date ) + ";;;" + STDE( СписокАкцийРучныхСкидок.name ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( СписокАкцийРучныхСкидок.ctext ) + ";1;0;;1;2" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Теперь формируем события по акциям/##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО( "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкцийРучныхСкидок" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ КодАкции = ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) );/##CHR(13)##//##CHR(10)##/ КодСкидки = ALLTRIM( СписокАкцийРучныхСкидок.discount );/##CHR(13)##//##CHR(10)##/ КодМероприятия = КодАкции + RIGHT(КодСкидки, 8 - LEN(КодАкции) ) ;/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( СписокАкцийРучныхСкидок.value_min ) AND ПУСТО( СписокАкцийРучныхСкидок.value_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокАкцийРучныхСкидок.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокАкцийРучныхСкидок.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокАкцийРучныхСкидок.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";" + ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( СписокАкцийРучныхСкидок.name ) + ";" + STDE( СписокАкцийРучныхСкидок.ctext ) + ";5;" + /##CHR(13)##//##CHR(10)##/ STR( СписокАкцийРучныхСкидок.type_ - 1 ) + ";" + ЕСЛИ( СписокАкцийРучныхСкидок.vtype == 1, "1", "0" ) + ";0;" + Процент );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Процент_min = STR( VAL( СписокАкцийРучныхСкидок.value_min ), 10, 2 );/##CHR(13)##//##CHR(10)##/ Процент_max = STR( VAL( СписокАкцийРучныхСкидок.value_max ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";" + ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( СписокАкцийРучныхСкидок.name ) + ";" + STDE( СписокАкцийРучныхСкидок.ctext ) + ";5;" + /##CHR(13)##//##CHR(10)##/ STR( СписокАкцийРучныхСкидок.type_ - 1 ) + ";" + ЕСЛИ( СписокАкцийРучныхСкидок.vtype == 1, "1", "0" ) + ";1;0;" + /##CHR(13)##//##CHR(10)##/ Процент_min + ";" + Процент_max );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ НомерПоПорядку++;/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ( "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц ОБЪЕКТЫ и СКИДКИ И ТОВАРОВ/##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT sprschem.code, sprschem.start_date, sprschem.end_date, sprschem.name, dsc.ctext, dsc.code AS discount, dsc.vtype/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON temp.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code", "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) ) + ";" + DTOC( СписокАкций.start_date ) + ";" + DTOC(СписокАкций.end_date ) +/##CHR(13)##//##CHR(10)##/ ";;;" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";1;0;;1;2" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО( "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ КодАкции = ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) );/##CHR(13)##//##CHR(10)##/ КодСкидки = ALLTRIM( СписокАкций.discount );/##CHR(13)##//##CHR(10)##/ КодМероприятия = КодАкции + RIGHT(КодСкидки, 8 - LEN(КодАкции) ) ;/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT obj.f_subres, obj.ware_folder, obj.warefolder_ic, obj.maincode, /##CHR(13)##//##CHR(10)##/ sprschem.discount AS discount, obj.aspect, ware.group_, obj.value, obj.f_evaluate, obj.subcode/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN " + ТОВАРЫВОБЪЕКТАХ + " ware ON obj.nn = ware.code/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON obj.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "'' AND ( obj.nn <> '''' OR obj.ware_folder = 1 )", "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT obj.card, obj.value, obj.f_evaluate/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "'' AND obj.card <> ''''", "СписокКарточныхОбъектов" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT obj.client, obj.client_folder, obj.clientfolder_ic, obj.value, obj.f_evaluate/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "'' AND ( obj.client <> '''' OR client_folder = 1 )", "СписокКлиентскихОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокТоварныхОбъектов" ) == 0 AND КОЛИЧЕСТВОСТРОК( "СписокКарточныхОбъектов" ) == 0 AND КОЛИЧЕСТВОСТРОК( "СписокКлиентскихОбъектов" ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ // Если нет "товарных" объектов в выбранной схеме, то пропускаем такую схему/##CHR(13)##//##CHR(10)##/ Строка = "";/##CHR(13)##//##CHR(10)##/ Строка2 = "";/##CHR(13)##//##CHR(10)##/ УсловиеКарт = "";/##CHR(13)##//##CHR(10)##/ УсловиеКлиентов = "";/##CHR(13)##//##CHR(10)##/ СписокХар = "";/##CHR(13)##//##CHR(10)##/ Процент = "";/##CHR(13)##//##CHR(10)##/ СписокТиповСкидок = "";/##CHR(13)##//##CHR(10)##/ ТипЗначенияСкидки = СписокАкций.vtype;/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокТоварныхОбъектов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокТоварныхОбъектов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоварныхОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокТоварныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокТоварныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ IF ( СписокТоварныхОбъектов.ware_folder OR !ПУСТО( СписокТоварныхОбъектов.maincode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAspectList = "";/##CHR(13)##//##CHR(10)##/ /////////////////////////////////////////////////////////////////////////////////##CHR(13)##//##CHR(10)##/ // Для разреза товара необходимо сформировать список используемых разрезов/##CHR(13)##//##CHR(10)##/ // Формируем список разрезов через запятую/##CHR(13)##//##CHR(10)##/ IF ( !ware_folder AND f_subres AND f_razr AND ( aspecttype == 2 OR aspecttype == 0 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоварныхОбъектов.group_ + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ mAspectValue= ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоварныхОбъектов.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ mAspectList = mAspectList + IIF( !EMPTY( mAspectList ), "#", "" ) + mAspectValue;/##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ КодГлавной = ЗАПРОС( "SELECT maincode FROM sprres WHERE code= ''" + СписокТоварныхОбъектов.subcode + "''" );/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + mAspectList;/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ALLTRIM( КодГлавной );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" );/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ЕСЛИ( ware_folder, ALLTRIM( STR( 1000000000 + warefolder_ic ) ), ALLTRIM( maincode ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка2 += ЕСЛИ( !ПУСТО( Строка2 ), CHR( 149 ), "" ) + Процент;/##CHR(13)##//##CHR(10)##/ СписокТиповСкидок += ЕСЛИ( !ПУСТО( СписокТиповСкидок ), CHR( 149 ), "" ) + ЕСЛИ( !ПУСТО( Строка ), ЕСЛИ( ТипЗначенияСкидки == 1 , "0", "1" ), ЕСЛИ( ТипЗначенияСкидки == 1, "1", "0" ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокКарточныхОбъектов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ УсловиеКарт = ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если процент скидки еще не был вычислен, то вычисляем его здесь/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( Процент ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокКарточныхОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокКарточныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокКарточныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокКлиентскихОбъектов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если процент скидки еще не был вычислен, то вычисляем его здесь/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( Процент ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокКлиентскихОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокКлиентскихОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокКлиентскихОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокКлиентскихОбъектов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ УсловиеКлиентов += ЕСЛИ( !ПУСТО( УсловиеКлиентов ), CHR( 149 ), "" ) + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокКлиентскихОбъектов.client_folder, ALLTRIM( STR( 1000000000 + СписокКлиентскихОбъектов.clientfolder_ic ) ), /##CHR(13)##//##CHR(10)##/ ALLTRIM( СписокКлиентскихОбъектов.client ) );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокКлиентскихОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКлиентскихОбъектов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКарточныхОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВидСкидки = ЕСЛИ( !ПУСТО( Строка ), ЕСЛИ( ТипЗначенияСкидки == 1 , "0", "1" ), ЕСЛИ( ТипЗначенияСкидки == 1, "1", "0" ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";" + ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) ) + ";" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( !ПУСТО( Строка ), "2", "1" ) + ";" + ЕСЛИ( ПУСТО( Строка ), ВидСкидки + ";" + Процент, /##CHR(13)##//##CHR(10)##/ Строка + ";" + СписокХар + ";" + Строка2 + ";;;" + СписокТиповСкидок + ";" + СписокТиповСкидок ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь записываем условия/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGCONDITIONS" );/##CHR(13)##//##CHR(10)##/ // Если были объекты с картами. то добавляем условие на классификатор карт/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( УсловиеКарт ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";15;" + ALLTRIM( STR( VAL( СписокАкций.code ) ) ) );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( УсловиеКлиентов ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";18;" + УсловиеКлиентов );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT * FROM specmdiscount WHERE code = ''" + СписокАкций.discount + "''", "Условие", 1 );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "Условие" );/##CHR(13)##//##CHR(10)##/ СписокУсловий = "";/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( csumma_min ) OR !EMPTY( csumma_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";1;>=;" + ALLTRIM( STR( csumma_min, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";1;<=;" + ALLTRIM( STR( csumma_max, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( summa_min ) OR !EMPTY( summa_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";22;>=;" + ALLTRIM( STR( summa_min, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";22;<=;" + ALLTRIM( STR( summa_max, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";2;>=;" + ALLTRIM( STR( kolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";2;<=;" + ALLTRIM( STR( kolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";23;>=;" + ALLTRIM( STR( ckolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";23;<=;" + ALLTRIM( STR( ckolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//* IF ( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";5;>=;" + ALLTRIM( prefix_min ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";5;<=;" + ALLTRIM( prefix_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }*//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( time_min ) OR !EMPTY( time_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";6;" + ALLTRIM( time_min ) + ";" + ALLTRIM( time_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( wday_min ) OR !EMPTY( wday_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";7;";/##CHR(13)##//##CHR(10)##/ СписокДней = "";/##CHR(13)##//##CHR(10)##/ day = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( day <= 7 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( wday_min <= wday_max )/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min AND day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min OR day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ day++;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ СписокУсловий += СписокДней + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 2 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";13;0;1;" + STR( birthday_min ) + ";" + STR( birthday_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокУсловий ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬ( ДескрипторФайла, СписокУсловий );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/ НомерПоПорядку++;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',227.00000000,'//Завершение выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',249.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',270.00000000,'//Текст ошибки драйвера ККМ. /##CHR(13)##//##CHR(10)##///Обработка должна вернуть строку, содержащую описание последней возникшей ошибки при работе с ККМ./##CHR(13)##//##CHR(10)##/RETURN _ТЕКСТОШИБКИ;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',272.00000000,'//Признак наличия ошибки ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если в результате выполнения последней операции с ККМ возникла ошибка. Иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN !EMPTY( _КОДОШИБКИ );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',201.00000000,'// Параметр, отвечает за необходимость дописывать к наименованию товара его вес или объем/##CHR(13)##//##CHR(10)##/// Значение "0" - не дописывать, любое другое значение - дописывать/##CHR(13)##//##CHR(10)##/IN_PARAM_NAME_WEIGHT = 1;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///ФайлОтветаФронтол = ЛЕВСИМВ( path_out, RAT( path_out, "\" ) ) + "LoadResult.txt";/##CHR(13)##//##CHR(10)##///ФАЙЛУДАЛИТЬ( ФайлОтветаФронтол );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 = true;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬСПЕЦЦЕНЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬСПЕЦЦЕНЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬКЛАССИФИКАТОРЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬКЛАССИФИКАТОРЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬПРАЙСЛИСТЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬПРАЙСЛИСТЫ_ФРОНТОЛ52 = false; /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##///Подготовка к выгрузке данных в ККМ./##CHR(13)##//##CHR(10)##///------ Если указанный файл-флаг уже существует, это говорит о том, что предыдущие данные еще не были загружены в ККМ, поэтому в эту ККМ данные не выгружаем/##CHR(13)##//##CHR(10)##/_КОДОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ТЕКСТОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ОШИБКАВЫПОЛНЕНИЯ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( exchangeservice_out ) AND !ПУСТО( path_flag_out ) AND ФАЙЛ( ALLTRIM( path_flag_out ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Обнаружены необработанные данные (найден файл-флаг " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( path_flag_out ) + "), поэтому новые данные выгружены не были.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',204.00000000,'//Начало выгрузки товаров в /##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) AND ПУСТО( exchangeservice_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ ФАЙЛУДАЛИТЬ( path_out );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ("ОШИБКА: " + _ERRORCODE + CHR(13) + "ОПИСАНИЕ: " + _ERRORDESCRIPTION);/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT COUNT(*) FROM " + ТОВАРЫ ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СООБЩЕНИЕ( "Вы уверены, что хотите очистить список товаров во Фронтол?", "Выгрузка товаров", 36 ) == 6 )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLWARES" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLWARES" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Иначе подаем команды на удаление отдельных товаров/##CHR(13)##//##CHR(10)##/ // если Признак загрузки остатков равен "перезаписывать"/##CHR(13)##//##CHR(10)##/ IF ( saldotype <> 1 AND !СОХРАНЯТЬТОВАРЫ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEWARESBYWARECODE" );/##CHR(13)##//##CHR(10)##/ // Достаем список выгружаемых товаров, проходим по нему и записываем команду удаления для каждого товара/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 ) /##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ + " WHERE f_subres = 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( f_nalogs )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //если установлен признак очистки, то передадим команды удаления всех налоговых групп и ставок/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //удалить все налоговые ставки/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLTAXRATES" );/##CHR(13)##//##CHR(10)##/ //удалить все налоговые группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLTAXGROUPS" );/##CHR(13)##//##CHR(10)##/ //удалить все налоговые ставки группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLTAXGROUPRATES" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Выгружаем налоговые группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXRATES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name, proc_, ntype, ex_code FROM sprkodn WHERE proc_ <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ) + " ORDER BY proc_", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ НомерНалогаВККМ = ЕСЛИ( ПУСТО( СписокНалогов.ntype ), ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "4", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "05", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "2", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "06", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "3", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "07", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "1", СписокНалогов.ex_code ), "" ) ) ) );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) )+ ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";0;" + STR( СписокНалогов.proc_ ) + ";" + НомерНалогаВККМ );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name FROM sprlistkodn ORDER BY code", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT list FROM speclistkodn WHERE code = ''" + СписокНалогов.code + "'' AND ( SELECT proc_ FROM sprkodn WHERE code= speclistkodn.list ) <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ), "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPRATES" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СоставНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СоставНалогов.list ) ) + ";0;" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //после того как загрузили налоги, нужно передать 2 настройки для налогов поумолчанию,/##CHR(13)##//##CHR(10)##/ //т.к. после очистки налогов в ККМ эти настройки сбрасываются/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //выбираем первую ставку из налоговых ставок, с наименьшим кодом и налоговой ставкой/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT TOP 1 code, list/##CHR(13)##//##CHR(10)##/ FROM speclistkodn /##CHR(13)##//##CHR(10)##/ WHERE list = (SELECT TOP 1 code FROM sprkodn WHERE proc_ <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ) + " ORDER BY proc_, code) /##CHR(13)##//##CHR(10)##/ AND ( SELECT proc_ FROM sprkodn WHERE code= speclistkodn.list ) <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ), "СписокНалогов");/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокНалогов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDSETTINGS" );/##CHR(13)##//##CHR(10)##/ //Код налоговой группы по умолчанию для регистрации по свободной цене/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "TaxGroupDefaultFreeID" + ";" + STR( VAL( СписокНалогов.code ) ) );/##CHR(13)##//##CHR(10)##/ //Код налоговой группы по умолчанию для регистрации по коду/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "TaxGroupDefaultCodeID" + ";" + STR( VAL( СписокНалогов.code ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник групп сертификатов/##CHR(13)##//##CHR(10)##/// Он должен идти первым, т.к. далее могут быть на него ссылки/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст, ГруппаСертификатовВводСертифик, ГруппаСертификатовСуммаКРасчет FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол группа сертификатов''" ), "ГруппыСертификатов" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "ГруппыСертификатов" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCARDGROUPS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ГруппыСертификатов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( ФронтолТекст ) + ";"+ /##CHR(13)##//##CHR(10)##/VAL( ГруппаСертификатовВводСертифик ) + ";" + VAL( ГруппаСертификатовСуммаКРасчет ) + ";0");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ГруппыСертификатов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник видов оплат/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст, ВидОплатРазрешенаСдача, ВидОплатТипОплаты, /##CHR(13)##//##CHR(10)##/ ВидОплатИзменяетДенежныйЯщик, ВидОплатОперация, ВидОплатКодПлатежнойСистемы, /##CHR(13)##//##CHR(10)##/ ВидОплатКодГруппыСертификатов, ВидОплатКодГруппыПечати FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол виды оплат''" ), "ВидыОплат" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "ВидыОплат" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDPAYMENTS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ВидыОплат" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( ФронтолТекст ) + ";" + VAL( ВидОплатРазрешенаСдача ) + ";"+/##CHR(13)##//##CHR(10)##/ ВидОплатТипОплаты + ";" + VAL( ВидОплатИзменяетДенежныйЯщик ) + ";" + STR( VAL( ВидОплатОперация ) - 1 ) + ";"+/##CHR(13)##//##CHR(10)##/ ВидОплатКодПлатежнойСистемы + ";" + VAL( ВидОплатКодГруппыСертификатов ) + ";" + ВидОплатКодГруппыПечати );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ВидыОплат" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник сертификатов/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст, СертификатКодГруппыСертификато, СертификатНачалоДиапазонаДлин,/##CHR(13)##//##CHR(10)##/ СертификатКонецДиапазонаДлин, СертификатНачалоДиапазонаПрефи, СертификатКонецДиапазонаПрефик,/##CHR(13)##//##CHR(10)##/ СертификатДатаНачалаДействия, СертификатДатаОкончанияДействи, СертификатНоминал, СертификатСостояние FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол сертификаты''" ), "Сертификаты" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "Сертификаты" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCARDS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "Сертификаты" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СертификатКодГруппыСертификато + ";" + code + ";" + STDE( name ) + ";;"+ /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СертификатНачалоДиапазонаДлин != 0, СертификатНачалоДиапазонаДлин, "") + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СертификатКонецДиапазонаДлин != 0, СертификатКонецДиапазонаДлин, "" )+ ";" + /##CHR(13)##//##CHR(10)##/ STDE( СертификатНачалоДиапазонаПрефи ) + ";" + STDE( СертификатКонецДиапазонаПрефик ) + ";" +/##CHR(13)##//##CHR(10)##/ DTOC( СертификатДатаНачалаДействия ) + ";" + DTOC( СертификатДатаОкончанияДействи ) + ";0;" + /##CHR(13)##//##CHR(10)##/ СертификатНоминал + ";" + VAL( СертификатСостояние ) );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "Сертификаты" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник комментариев/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол комментарии''" ), "Комментарии" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "Комментарии" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCOMMENTS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "Комментарии" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( ФронтолТекст ));/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "Комментарии" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //очистка реквизитов агента при установке флага очистки ККМ перед загрузкой/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, name, inn, legal_adress, telefon, agent_type, agent_oper, agent_telephone_pa, agent_name_op, agent_inn_op, agent_address_op, agent_telephone_op, agent_telephone_pp/##CHR(13)##//##CHR(10)##/ FROM sprclient /##CHR(13)##//##CHR(10)##/ WHERE code IN (SELECT sprres.vendor FROM sprres sprres/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " temp ON temp.nn = sprres.code AND sprres.f_agentware = 1 )","ПоставщикиАгенты");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (КОЛИЧЕСТВОСТРОК("ПоставщикиАгенты") > 0)/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "ПоставщикиАгенты" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //формируем строку реквизитов, только обязательными для конкретного типа агента реквизитами для того чтобы правильно формировались тэги в чеке/##CHR(13)##//##CHR(10)##/ IF ( VAL(ПоставщикиАгенты.agent_type) == 0 OR VAL(ПоставщикиАгенты.agent_type) == 1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";;;;;" + LEFT( ПоставщикиАгенты.agent_telephone_pp , 100 ) + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 2 OR VAL(ПоставщикиАгенты.agent_type) == 3 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( ПоставщикиАгенты.agent_oper ), 24 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";" + LEFT ( ПоставщикиАгенты.agent_name_op, 64 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT ( ПоставщикиАгенты.agent_inn_op, 10) + ";" + LEFT( ПоставщикиАгенты.agent_address_op , 256 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_op , 100 ) + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 4 OR VAL(ПоставщикиАгенты.agent_type) == 5 OR VAL(ПоставщикиАгенты.agent_type) == 6 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;;;;;;;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СтрокаПоставщика))/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СтрокаПоставщика );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ПоставщикиАгенты" ); /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',205.00000000,'//Выгрузка папок товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Из временной таблицы достаем список папок товаров, сортируя его по родительской папке /##CHR(13)##//##CHR(10)##/КодСтруктурыТоваров = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S02'' ) " );/##CHR(13)##//##CHR(10)##/КодСтруктурыУслуг = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S05'' ) " );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст("SELECT name, ic, /##CHR(13)##//##CHR(10)##/ CASE WHEN parent IN (SELECT ic FROM spectree/##CHR(13)##//##CHR(10)##/ WHERE code IN ( ''" + КодСтруктурыТоваров + "'', ''" + КодСтруктурыУслуг + "'') AND /##CHR(13)##//##CHR(10)##/ folder= 1 AND parent= 0 ) THEN 0 ELSE parent END AS parent/##CHR(13)##//##CHR(10)##/ FROM (/##CHR(13)##//##CHR(10)##/ SELECT name, ic, parent, identity_column/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S02'', 0, ''" + КодСтруктурыТоваров + "'', 0 ) AS tmcfolders/##CHR(13)##//##CHR(10)##/ UNION SELECT name, ic, parent, identity_column + 100000000/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S05'', 0, ''" + КодСтруктурыУслуг + "'', 0 ) AS srvfolders/##CHR(13)##//##CHR(10)##/ ) AS folders/##CHR(13)##//##CHR(10)##/ WHERE ic IN ( SELECT ic FROM " + ПАПКИ + ")/##CHR(13)##//##CHR(10)##/ ORDER BY identity_column", "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( ABS( ic ) + IIF( ic < 0, 2000000000, 1000000000 ) ) ) + ";" + //1. идентификатор/##CHR(13)##//##CHR(10)##/ ";" + //2. /##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //3. наименование/##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //4. текст/##CHR(13)##//##CHR(10)##/ ";" + //5. /##CHR(13)##//##CHR(10)##/ ";" + //6. /##CHR(13)##//##CHR(10)##/ ";" + //7. не используется/##CHR(13)##//##CHR(10)##/ ";" + //8. /##CHR(13)##//##CHR(10)##/ "0.00" + ";" + //9. минимальная цена/##CHR(13)##//##CHR(10)##/ ";" + //10. /##CHR(13)##//##CHR(10)##/ "0" + ";" + //11. код схемы разрезов/##CHR(13)##//##CHR(10)##/ ";" + //12. /##CHR(13)##//##CHR(10)##/ ";" + //13. /##CHR(13)##//##CHR(10)##/ ";" + //14. /##CHR(13)##//##CHR(10)##/ ";" + //15. не используется/##CHR(13)##//##CHR(10)##/ ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + IIF(ic < 0, 2000000000, 1000000000 ) ) ) ) + ";" + //16.код родительской группы/##CHR(13)##//##CHR(10)##/ "0" + ";" + //17. товар или группа. "0" для группы/##CHR(13)##//##CHR(10)##/ ";" + //18. /##CHR(13)##//##CHR(10)##/ ";" + //19. /##CHR(13)##//##CHR(10)##/ ";" + //20. /##CHR(13)##//##CHR(10)##/ ";" + //21. /##CHR(13)##//##CHR(10)##/ ";" + //22. /##CHR(13)##//##CHR(10)##/ ";" + //23. код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. /##CHR(13)##//##CHR(10)##/ ";" + //25. /##CHR(13)##//##CHR(10)##/ ";" + //26. артикул/##CHR(13)##//##CHR(10)##/ ";" + //27. тип скидки/##CHR(13)##//##CHR(10)##/ ";" + //28. значение скидки/##CHR(13)##//##CHR(10)##/ ";" + //29. максимальная скидка/##CHR(13)##//##CHR(10)##/ ";" + //30. /##CHR(13)##//##CHR(10)##/ ";" + //31. файл с картинкой/##CHR(13)##//##CHR(10)##/ ";" + //32. описание/##CHR(13)##//##CHR(10)##/ ";" + //33. /##CHR(13)##//##CHR(10)##/ ";" + //34. /##CHR(13)##//##CHR(10)##/ ";" + //35. /##CHR(13)##//##CHR(10)##/ ";" + //36. /##CHR(13)##//##CHR(10)##/ ";" + //37./##CHR(13)##//##CHR(10)##/ ";" + //38./##CHR(13)##//##CHR(10)##/ ";" + //39. код группы печати чека/##CHR(13)##//##CHR(10)##/ ";" + //40. код группы печати копии/##CHR(13)##//##CHR(10)##/ ";" + //41. код группы печати счета/##CHR(13)##//##CHR(10)##/ ";" + //42. код группы печати марки/##CHR(13)##//##CHR(10)##/ ";"; //43. код предприятия/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',228.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##/ФайлФлаг = ФайлСоздать( path_flag_out );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ФайлФлаг, "");/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ФайлФлаг );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Ждем 20 секунд появления LoadResult.txt/##CHR(13)##//##CHR(10)##///Время = TickCount( );/##CHR(13)##//##CHR(10)##///WHILE ( !ФАЙЛ( ФайлОтветаФронтол ) && TickCount( ) - Время < 20000 ) Ожидание( 1000 );/##CHR(13)##//##CHR(10)##///IF ( ФАЙЛ( ФайлОтветаФронтол ) )/##CHR(13)##//##CHR(10)##/// ВЫПОЛНИТЬ( "notepad", ФайлОтветаФронтол );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',229.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN path_flag_out;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',230.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения количества созданных файлов с данными../##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое, равное количеству созданных файлов./##CHR(13)##//##CHR(10)##/RETURN 1;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',271.00000000,'//Последняя ошибка драйвера ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое - код последней ошибки драйвера ККМ./##CHR(13)##//##CHR(10)##/RETURN _КОДОШИБКИ;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',231.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##/RETURN path_out;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',206.00000000,'//Выгрузка разрезов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если в карточке оборудования стоит признак выгружать разрезы товаров, то выгружаем их/##CHR(13)##//##CHR(10)##/IF ( f_razr AND ( aspecttype == 2 OR aspecttype == 0) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем схемы разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, name FROM " + СХЕМЫРАЗРЕЗОВ, "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTSCHMS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СхемыРазрезов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + LEFT( ALLTRIM( name ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( name ), 100 ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь выгружаем сами разрезы/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTS" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ПерейтиВНачало( );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, f_num, name FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE schemecode = ''" + СхемыРазрезов.schemecode + "''", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + STR( f_num, 1 ) + ";" + mName + ";" + mName;/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // У использованых записей проставляем поле id, для того, чтобы корректно выгрузить значения разрезов/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + СОСТАВСХЕМРАЗРЕЗОВ + " SET id= " + STR( f_num ) + " WHERE schemecode= ''" + schemecode + "'' AND f_num= " + STR( f_num ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Выгружаем значения разрезов/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTVALUES" );/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, id, aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE id <> 0", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Выгружаем список значений разрезов соответствующий текущей строке состава схемы/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode, valuecode, name FROM " + ЗНАЧЕНИЯРАЗРЕЗОВ + " WHERE aspectcode = ''" + СоставСхемы.aspectcode + "''", "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";" + STR( VAL( valuecode ) ) + ";" + mName + ";" + mName + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Для каждого разреза добавляем специальное "пустое" значение с кодом 999999999/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";999999999;;;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',207.00000000,'//Подготовка к выгрузке товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',232.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',235.00000000,'// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( ФАЙЛ( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLUSERS" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник пользователей (из справочника работников)/##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ( "SELECT code, name, chequetext, profile, password, ex_code, /##CHR(13)##//##CHR(10)##/ ( SELECT MAX( inn ) FROM sprempl WHERE maincode = temp.code ) AS inn /##CHR(13)##//##CHR(10)##/ FROM " + Пользователи + " temp", "СправочникПользователей" ); /##CHR(13)##//##CHR(10)##/ВЫБРАТЬКОНТЕКСТ( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDUSERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СправочникПользователей" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( chequetext ) + ";" + STDE( profile ) + ";" + STDE( password ) + ";" + STDE( ex_code ) + ";" + STDE( inn ) );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ВЫГРУЖАТЬСОТРУДНИКОВ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем справочник сотрудников (из справочника работников)/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT temp.code, temp.name, temp.chequetext, temp.profile, temp.password, temp.ex_code, /##CHR(13)##//##CHR(10)##/ dbo.fn_getchar_ex ( ''SPR'',''S06'', ''ФронтолСправочникСотрудниковПользователь'', sprempl.code, DEFAULT, DEFAULT, DEFAULT) AS empl/##CHR(13)##//##CHR(10)##/ FROM " + Пользователи + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprempl sprempl ON temp.code = sprempl.maincode", "СправочникСотрудников"); /##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDEMPLOYEES");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СправочникСотрудников" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( empl ) == 1 )/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + code + ";" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";;" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',240.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !РучнойОбмен )/##CHR(13)##//##CHR(10)##/{ /##CHR(13)##//##CHR(10)##/ //------- Создаем файл флага/##CHR(13)##//##CHR(10)##/ fileName = ALLTRIM( ИмяФайлаФлага );/##CHR(13)##//##CHR(10)##/ fileHandle = ФайлСоздать( fileName );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Если не получилось создать файл - идем дальше не останавливаясь на данном ККМ/##CHR(13)##//##CHR(10)##/ IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось создать файл флага ''" + fileName + "'' для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- Записываем в него команды/##CHR(13)##//##CHR(10)##/ commands = "";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 1 )/##CHR(13)##//##CHR(10)##/ commands = "$$$NEWTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 2 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYDATETIMERANGE" + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ commands = commands + TTOC( НАЧАЛОПЕРИОДА ) + ";" + TTOC( КОНЕЦПЕРИОДА ) + ";";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 3 )/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYSESSIONSRANGE" + CHR(13) + CHR(10) + ПЕРВАЯСМЕНА + ";" + ПОСЛЕДНЯЯСМЕНА;/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 4 )/##CHR(13)##//##CHR(10)##/ commands = "$$$ALLTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 5 )/##CHR(13)##//##CHR(10)##/ commands = "$$$LASTSESSIONTRANSACTIONS";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Для ККМ ШТРИХ - команды не нужны/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( fileHandle, commands );/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:45') #command INSERT INTO spreqprofiles (CODE,EX_CODE,NAME,TYPE,PORT,NOTE,PARENT,POSORDER,NOTAVAIL,MAINDB,MAINIC,CACCESS,TACCESS,FOLDER,RID,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('','','Обмен данными с Фронтол 6','ККМ',0.00000000,'Профиль обмена с программным обеспечением Frontol 6.19.2 и выше. Совместим с Айтида, начиная с версии 4.5.0',0.00000000,7401.00000000,0,'',0.00000000,'','',0,'7490CF3F-F966-4851-8939-834B20D89A63',0,1,0,'04.04.2024 11:23:45') #begin #description Обмен данными с Фронтол 6 (вскрытие тары) #name Обмен данными с Фронтол 6 (вскрытие тары) #code 0000000354 #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',200.00000000,'//Инициализация ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',201.00000000,'// Параметр, отвечает за необходимость дописывать к наименованию товара его вес или объем/##CHR(13)##//##CHR(10)##/// Значение "0" - не дописывать, любое другое значение - дописывать/##CHR(13)##//##CHR(10)##/IN_PARAM_NAME_WEIGHT = 1;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///ФайлОтветаФронтол = ЛЕВСИМВ( path_out, RAT( path_out, "\" ) ) + "LoadResult.txt";/##CHR(13)##//##CHR(10)##///ФАЙЛУДАЛИТЬ( ФайлОтветаФронтол );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 = true;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬСПЕЦЦЕНЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬСПЕЦЦЕНЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬШКДЛЯРАЗЛИВНОЙПРОДУКЦИИ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬШКДЛЯРАЗЛИВНОЙПРОДУКЦИИ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬКЛАССИФИКАТОРЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬКЛАССИФИКАТОРЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬПРАЙСЛИСТЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬПРАЙСЛИСТЫ_ФРОНТОЛ52 = false; /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##///Подготовка к выгрузке данных в ККМ./##CHR(13)##//##CHR(10)##///------ Если указанный файл-флаг уже существует, это говорит о том, что предыдущие данные еще не были загружены в ККМ, поэтому в эту ККМ данные не выгружаем/##CHR(13)##//##CHR(10)##/_КОДОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ТЕКСТОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ОШИБКАВЫПОЛНЕНИЯ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( exchangeservice_out ) AND !ПУСТО( path_flag_out ) AND ФАЙЛ( ALLTRIM( path_flag_out ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Обнаружены необработанные данные (найден файл-флаг " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( path_flag_out ) + "), поэтому новые данные выгружены не были.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',204.00000000,'//Начало выгрузки товаров в /##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) AND ПУСТО( exchangeservice_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ ФАЙЛУДАЛИТЬ( path_out );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ("ОШИБКА: " + _ERRORCODE + CHR(13) + "ОПИСАНИЕ: " + _ERRORDESCRIPTION);/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT COUNT(*) FROM " + ТОВАРЫ ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СООБЩЕНИЕ( "Вы уверены, что хотите очистить список товаров во Фронтол?", "Выгрузка товаров", 36 ) == 6 )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLWARES" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLWARES" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Иначе подаем команды на удаление отдельных товаров/##CHR(13)##//##CHR(10)##/ // если Признак загрузки остатков равен "перезаписывать"/##CHR(13)##//##CHR(10)##/ IF ( saldotype <> 1 AND !СОХРАНЯТЬТОВАРЫ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEWARESBYWARECODE" );/##CHR(13)##//##CHR(10)##/ // Достаем список выгружаемых товаров, проходим по нему и записываем команду удаления для каждого товара/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 ) /##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ + " WHERE f_subres = 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( f_nalogs )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //если установлен признак очистки, то передадим команды удаления всех налоговых групп и ставок/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //удалить все налоговые ставки/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLTAXRATES" );/##CHR(13)##//##CHR(10)##/ //удалить все налоговые группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLTAXGROUPS" );/##CHR(13)##//##CHR(10)##/ //удалить все налоговые ставки группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLTAXGROUPRATES" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Выгружаем налоговые группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXRATES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name, proc_, ntype, ex_code FROM sprkodn WHERE proc_ <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ) + " ORDER BY proc_", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ НомерНалогаВККМ = ЕСЛИ( ПУСТО( СписокНалогов.ntype ), ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "4", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "05", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "2", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "06", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "3", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "07", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "1", СписокНалогов.ex_code ), "" ) ) ) );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) )+ ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";0;" + STR( СписокНалогов.proc_ ) + ";" + НомерНалогаВККМ );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name FROM sprlistkodn ORDER BY code", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT list FROM speclistkodn WHERE code = ''" + СписокНалогов.code + "'' AND ( SELECT proc_ FROM sprkodn WHERE code= speclistkodn.list ) <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ), "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPRATES" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СоставНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СоставНалогов.list ) ) + ";0;" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //после того как загрузили налоги, нужно передать 2 настройки для налогов поумолчанию,/##CHR(13)##//##CHR(10)##/ //т.к. после очистки налогов в ККМ эти настройки сбрасываются/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //выбираем первую ставку из налоговых ставок, с наименьшим кодом и налоговой ставкой/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT TOP 1 code, list/##CHR(13)##//##CHR(10)##/ FROM speclistkodn /##CHR(13)##//##CHR(10)##/ WHERE list = (SELECT TOP 1 code FROM sprkodn WHERE proc_ <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ) + " ORDER BY proc_, code) /##CHR(13)##//##CHR(10)##/ AND ( SELECT proc_ FROM sprkodn WHERE code= speclistkodn.list ) <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ), "СписокНалогов");/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокНалогов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDSETTINGS" );/##CHR(13)##//##CHR(10)##/ //Код налоговой группы по умолчанию для регистрации по свободной цене/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "TaxGroupDefaultFreeID" + ";" + STR( VAL( СписокНалогов.code ) ) );/##CHR(13)##//##CHR(10)##/ //Код налоговой группы по умолчанию для регистрации по коду/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "TaxGroupDefaultCodeID" + ";" + STR( VAL( СписокНалогов.code ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник групп сертификатов/##CHR(13)##//##CHR(10)##/// Он должен идти первым, т.к. далее могут быть на него ссылки/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст, ГруппаСертификатовВводСертифик, ГруппаСертификатовСуммаКРасчет FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол группа сертификатов''" ), "ГруппыСертификатов" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "ГруппыСертификатов" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCARDGROUPS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ГруппыСертификатов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( ФронтолТекст ) + ";"+ /##CHR(13)##//##CHR(10)##/VAL( ГруппаСертификатовВводСертифик ) + ";" + VAL( ГруппаСертификатовСуммаКРасчет ) + ";0");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ГруппыСертификатов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник видов оплат/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст, ВидОплатРазрешенаСдача, ВидОплатТипОплаты, /##CHR(13)##//##CHR(10)##/ ВидОплатИзменяетДенежныйЯщик, ВидОплатОперация, ВидОплатКодПлатежнойСистемы, /##CHR(13)##//##CHR(10)##/ ВидОплатКодГруппыСертификатов, ВидОплатКодГруппыПечати FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол виды оплат''" ), "ВидыОплат" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "ВидыОплат" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDPAYMENTS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ВидыОплат" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( ФронтолТекст ) + ";" + VAL( ВидОплатРазрешенаСдача ) + ";"+/##CHR(13)##//##CHR(10)##/ ВидОплатТипОплаты + ";" + VAL( ВидОплатИзменяетДенежныйЯщик ) + ";" + STR( VAL( ВидОплатОперация ) - 1 ) + ";"+/##CHR(13)##//##CHR(10)##/ ВидОплатКодПлатежнойСистемы + ";" + VAL( ВидОплатКодГруппыСертификатов ) + ";" + ВидОплатКодГруппыПечати );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ВидыОплат" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник сертификатов/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст, СертификатКодГруппыСертификато, СертификатНачалоДиапазонаДлин,/##CHR(13)##//##CHR(10)##/ СертификатКонецДиапазонаДлин, СертификатНачалоДиапазонаПрефи, СертификатКонецДиапазонаПрефик,/##CHR(13)##//##CHR(10)##/ СертификатДатаНачалаДействия, СертификатДатаОкончанияДействи, СертификатНоминал, СертификатСостояние FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол сертификаты''" ), "Сертификаты" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "Сертификаты" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCARDS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "Сертификаты" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СертификатКодГруппыСертификато + ";" + code + ";" + STDE( name ) + ";;"+ /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СертификатНачалоДиапазонаДлин != 0, СертификатНачалоДиапазонаДлин, "") + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СертификатКонецДиапазонаДлин != 0, СертификатКонецДиапазонаДлин, "" )+ ";" + /##CHR(13)##//##CHR(10)##/ STDE( СертификатНачалоДиапазонаПрефи ) + ";" + STDE( СертификатКонецДиапазонаПрефик ) + ";" +/##CHR(13)##//##CHR(10)##/ DTOC( СертификатДатаНачалаДействия ) + ";" + DTOC( СертификатДатаОкончанияДействи ) + ";0;" + /##CHR(13)##//##CHR(10)##/ СертификатНоминал + ";" + VAL( СертификатСостояние ) );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "Сертификаты" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник комментариев/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, ФронтолТекст FROM "+/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "SELECT header FROM sprtabs WHERE name= ''Фронтол комментарии''" ), "Комментарии" );/##CHR(13)##//##CHR(10)##/Выбратьконтекст( "Комментарии" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCOMMENTS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "Комментарии" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( ФронтолТекст ));/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "Комментарии" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //очистка реквизитов агента при установке флага очистки ККМ перед загрузкой/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, name, inn, legal_adress, telefon, agent_type, agent_oper, agent_telephone_pa, agent_name_op, agent_inn_op, agent_address_op, agent_telephone_op, agent_telephone_pp/##CHR(13)##//##CHR(10)##/ FROM sprclient /##CHR(13)##//##CHR(10)##/ WHERE code IN (SELECT sprres.vendor FROM sprres sprres/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " temp ON temp.nn = sprres.code AND sprres.f_agentware = 1 )","ПоставщикиАгенты");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (КОЛИЧЕСТВОСТРОК("ПоставщикиАгенты") > 0)/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "ПоставщикиАгенты" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //формируем строку реквизитов, только обязательными для конкретного типа агента реквизитами для того чтобы правильно формировались тэги в чеке/##CHR(13)##//##CHR(10)##/ IF ( VAL(ПоставщикиАгенты.agent_type) == 0 OR VAL(ПоставщикиАгенты.agent_type) == 1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";;;;;" + LEFT( ПоставщикиАгенты.agent_telephone_pp , 100 ) + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 2 OR VAL(ПоставщикиАгенты.agent_type) == 3 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( ПоставщикиАгенты.agent_oper ), 24 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";" + LEFT ( ПоставщикиАгенты.agent_name_op, 64 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT ( ПоставщикиАгенты.agent_inn_op, 10) + ";" + LEFT( ПоставщикиАгенты.agent_address_op , 256 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_op , 100 ) + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 4 OR VAL(ПоставщикиАгенты.agent_type) == 5 OR VAL(ПоставщикиАгенты.agent_type) == 6 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;;;;;;;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СтрокаПоставщика))/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СтрокаПоставщика );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ПоставщикиАгенты" ); /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',205.00000000,'//Выгрузка папок товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Из временной таблицы достаем список папок товаров, сортируя его по родительской папке /##CHR(13)##//##CHR(10)##/КодСтруктурыТоваров = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S02'' ) " );/##CHR(13)##//##CHR(10)##/КодСтруктурыУслуг = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S05'' ) " );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст("SELECT name, ic, /##CHR(13)##//##CHR(10)##/ CASE WHEN parent IN (SELECT ic FROM spectree/##CHR(13)##//##CHR(10)##/ WHERE code IN ( ''" + КодСтруктурыТоваров + "'', ''" + КодСтруктурыУслуг + "'') AND /##CHR(13)##//##CHR(10)##/ folder= 1 AND parent= 0 ) THEN 0 ELSE parent END AS parent/##CHR(13)##//##CHR(10)##/ FROM (/##CHR(13)##//##CHR(10)##/ SELECT name, ic, parent, identity_column/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S02'', 0, ''" + КодСтруктурыТоваров + "'', 0 ) AS tmcfolders/##CHR(13)##//##CHR(10)##/ UNION SELECT name, ic, parent, identity_column + 100000000/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S05'', 0, ''" + КодСтруктурыУслуг + "'', 0 ) AS srvfolders/##CHR(13)##//##CHR(10)##/ ) AS folders/##CHR(13)##//##CHR(10)##/ WHERE ic IN ( SELECT ic FROM " + ПАПКИ + ")/##CHR(13)##//##CHR(10)##/ ORDER BY identity_column", "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( ABS( ic ) + IIF( ic < 0, 2000000000, 1000000000 ) ) ) + ";" + //1. идентификатор/##CHR(13)##//##CHR(10)##/ ";" + //2. /##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //3. наименование/##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //4. текст/##CHR(13)##//##CHR(10)##/ ";" + //5. /##CHR(13)##//##CHR(10)##/ ";" + //6. /##CHR(13)##//##CHR(10)##/ ";" + //7. не используется/##CHR(13)##//##CHR(10)##/ ";" + //8. /##CHR(13)##//##CHR(10)##/ "0.00" + ";" + //9. минимальная цена/##CHR(13)##//##CHR(10)##/ ";" + //10. /##CHR(13)##//##CHR(10)##/ "0" + ";" + //11. код схемы разрезов/##CHR(13)##//##CHR(10)##/ ";" + //12. /##CHR(13)##//##CHR(10)##/ ";" + //13. /##CHR(13)##//##CHR(10)##/ ";" + //14. /##CHR(13)##//##CHR(10)##/ ";" + //15. не используется/##CHR(13)##//##CHR(10)##/ ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + IIF(ic < 0, 2000000000, 1000000000 ) ) ) ) + ";" + //16.код родительской группы/##CHR(13)##//##CHR(10)##/ "0" + ";" + //17. товар или группа. "0" для группы/##CHR(13)##//##CHR(10)##/ ";" + //18. /##CHR(13)##//##CHR(10)##/ ";" + //19. /##CHR(13)##//##CHR(10)##/ ";" + //20. /##CHR(13)##//##CHR(10)##/ ";" + //21. /##CHR(13)##//##CHR(10)##/ ";" + //22. /##CHR(13)##//##CHR(10)##/ ";" + //23. код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. /##CHR(13)##//##CHR(10)##/ ";" + //25. /##CHR(13)##//##CHR(10)##/ ";" + //26. артикул/##CHR(13)##//##CHR(10)##/ ";" + //27. тип скидки/##CHR(13)##//##CHR(10)##/ ";" + //28. значение скидки/##CHR(13)##//##CHR(10)##/ ";" + //29. максимальная скидка/##CHR(13)##//##CHR(10)##/ ";" + //30. /##CHR(13)##//##CHR(10)##/ ";" + //31. файл с картинкой/##CHR(13)##//##CHR(10)##/ ";" + //32. описание/##CHR(13)##//##CHR(10)##/ ";" + //33. /##CHR(13)##//##CHR(10)##/ ";" + //34. /##CHR(13)##//##CHR(10)##/ ";" + //35. /##CHR(13)##//##CHR(10)##/ ";" + //36. /##CHR(13)##//##CHR(10)##/ ";" + //37./##CHR(13)##//##CHR(10)##/ ";" + //38./##CHR(13)##//##CHR(10)##/ ";" + //39. код группы печати чека/##CHR(13)##//##CHR(10)##/ ";" + //40. код группы печати копии/##CHR(13)##//##CHR(10)##/ ";" + //41. код группы печати счета/##CHR(13)##//##CHR(10)##/ ";" + //42. код группы печати марки/##CHR(13)##//##CHR(10)##/ ";"; //43. код предприятия/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',206.00000000,'//Выгрузка разрезов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если в карточке оборудования стоит признак выгружать разрезы товаров, то выгружаем их/##CHR(13)##//##CHR(10)##/IF ( f_razr AND ( aspecttype == 2 OR aspecttype == 0) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем схемы разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, name FROM " + СХЕМЫРАЗРЕЗОВ, "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTSCHMS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СхемыРазрезов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + LEFT( ALLTRIM( name ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( name ), 100 ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь выгружаем сами разрезы/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTS" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ПерейтиВНачало( );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, f_num, name FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE schemecode = ''" + СхемыРазрезов.schemecode + "''", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + STR( f_num, 1 ) + ";" + mName + ";" + mName;/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // У использованых записей проставляем поле id, для того, чтобы корректно выгрузить значения разрезов/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + СОСТАВСХЕМРАЗРЕЗОВ + " SET id= " + STR( f_num ) + " WHERE schemecode= ''" + schemecode + "'' AND f_num= " + STR( f_num ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Выгружаем значения разрезов/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTVALUES" );/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, id, aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE id <> 0", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Выгружаем список значений разрезов соответствующий текущей строке состава схемы/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode, valuecode, name FROM " + ЗНАЧЕНИЯРАЗРЕЗОВ + " WHERE aspectcode = ''" + СоставСхемы.aspectcode + "''", "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";" + STR( VAL( valuecode ) ) + ";" + mName + ";" + mName + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Для каждого разреза добавляем специальное "пустое" значение с кодом 999999999/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";999999999;;;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',207.00000000,'//Подготовка к выгрузке товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',208.00000000,'//Выгрузка всех товаров в ККМ./##CHR(13)##//##CHR(10)##/СтавкаБезНДС = ЗАПРОС( "SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM sprlistkodn /##CHR(13)##//##CHR(10)##/ WHERE code = ( SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM speclistkodn /##CHR(13)##//##CHR(10)##/ WHERE list = ( SELECT TOP 1 code FROM/##CHR(13)##//##CHR(10)##/ sprkodn /##CHR(13)##//##CHR(10)##/ WHERE ntype = '''' ) )");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КодФирмыОборудования = ЗАПРОС("SELECT firm FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''");/##CHR(13)##//##CHR(10)##///если заполнена фирма в оборудовании, то определяем признак не плательщика НДС из выбранной фирмы/##CHR(13)##//##CHR(10)##///иначе берем выбранныю фирму в группе ресурсов/##CHR(13)##//##CHR(10)##/ЧастьЗапросаФирмаБезНДС = "";/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( КодФирмыОборудования ) )/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = ''" + КодФирмыОборудования + "'' ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = temp.firm ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///если в группе ресурсов не указана фирма, а указан код ФР и заполнен список фирм в оборудовании, то второй запрос поменять на/##CHR(13)##//##CHR(10)##///ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = (SELECT TOP 1 firm FROM " + СПИСОКФР + " WHERE fr_code = temp.nkkm ) ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса = "";/##CHR(13)##//##CHR(10)##/ЧастьЗапросаРеквизитовАгента = "";/##CHR(13)##//##CHR(10)##/mAgentDetailsCode = "";/##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента = ", sprres.f_agentware AS sprres_f_agentware, sprres.vendor AS sprres_vendor "/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ("Подготовка к формированию файла выгрузки");/##CHR(13)##//##CHR(10)##/ТекстЗапроса = "SELECT temp.*,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnnname( sprres.code ) ELSE sprres.name END AS sprres_name,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnncname( sprres.code ) ELSE sprres.shortname END AS sprres_shortname,/##CHR(13)##//##CHR(10)##/ sprres.nnvid AS sprres_nnvid,/##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprres.nnvid ) AS sprres_alcotype,/##CHR(13)##//##CHR(10)##/ ISNULL( (SELECT MAX( d_litr ) FROM sprres_egais WHERE code = sprres.code), 0 ) AS spregais_d_litr,/##CHR(13)##//##CHR(10)##/ sprres.d_litr AS sprres_d_litr,/##CHR(13)##//##CHR(10)##/ sprres.a_proc AS sprres_a_proc,/##CHR(13)##//##CHR(10)##/ sprres.ed AS sprres_ed,/##CHR(13)##//##CHR(10)##/ (SELECT ffdcode FROM spredn WHERE code = sprres.ed) AS ffdcode,/##CHR(13)##//##CHR(10)##/ (SELECT f_volume FROM spredn WHERE code = sprres.ed) AS ed_f_volume,/##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.rsubject, '''' ) AS spr_rsubject,/##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.paytype, '''' ) AS spr_paytype,/##CHR(13)##//##CHR(10)##/ sprres.f_make AS sprres_f_make,/##CHR(13)##//##CHR(10)##/ sprres.cat AS sprres_cat,/##CHR(13)##//##CHR(10)##/ sprres.markgroup AS sprres_markgroup,/##CHR(13)##//##CHR(10)##/ sprres.f_mark AS sprres_f_mark,/##CHR(13)##//##CHR(10)##/ sprres.f_marknotrequire AS sprres_f_marknotrequire,/##CHR(13)##//##CHR(10)##/ sprres.f_draft AS sprres_f_draft,/##CHR(13)##//##CHR(10)##/ sprres.gtin AS sprres_gtin,/##CHR(13)##//##CHR(10)##/ sprres.enterprice AS sprres_enterprice,/##CHR(13)##//##CHR(10)##/ ISNULL( dbo.fn_getint_ex(''SPR'', ''S02'', ''ФронтолБезВводаКоличества'', sprres.code, '''', '''', '''' ), 0 ) AS noenterquantity,/##CHR(13)##//##CHR(10)##/ (SELECT TOP 1 fr_code FROM " + СПИСОКФР + " WHERE firm = temp.firm) AS tovar_firm " +/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС + /##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/kodGrPintChek = "";/##CHR(13)##//##CHR(10)##/kodGrPintCopy = "";/##CHR(13)##//##CHR(10)##/kodGrPintInvoice = "";/##CHR(13)##//##CHR(10)##/kodGrPintMark = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintChek,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintCopy,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintInvoice,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintMark "; /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/vizualmodif = "";/##CHR(13)##//##CHR(10)##/ЛеваяГраница = "";/##CHR(13)##//##CHR(10)##/ПраваяГраница = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", dbo.fn_getint_ex( ''SPR'', ''S02'', ''ВизуальныйВыборМодификаторов'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS vizualmodif,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ЛеваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ЛеваяГраница,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ПраваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ПраваяГраница ";/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса += " FROM " + ТОВАРЫ + " temp /##CHR(13)##//##CHR(10)##/INNER JOIN sprres sprres ON temp.code = sprres.maincode /##CHR(13)##//##CHR(10)##/LEFT OUTER JOIN sprres_g sprres_g ON sprres.group_ = sprres_g.code";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ(ТекстЗапроса,"СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрокОбщее = КоличествоСтрок("СписокТоваров");/##CHR(13)##//##CHR(10)##/Индикатор("Выгрузка товаров",КоличествоСтрокОбщее);/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок=0;/##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО("СписокТоваров");/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ( "Формирование файла выгрузки");/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //СИСТЕМНОЕСООБЩЕНИЕ( "Пожалуйста, подождите.");/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, " Выгрузка товаров. Обработка " + Alltrim(КоличествоСтрок) + " из " + ALLTRIM(КоличествоСтрокОбщее) );/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если указано выгружать только разрезы, без самих карточек, то пропускаем карточки разрезов/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 AND СписокТоваров.f_subres )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Вычисляем код ФР, который должен использоваться с товаром/##CHR(13)##//##CHR(10)##/ // Если в группе ресурсов указан конкретный код - берем его/##CHR(13)##//##CHR(10)##/ // Иначе, берем фирму и по ней ищем код ФР в l_frlist/##CHR(13)##//##CHR(10)##/ mFr_code = ЕСЛИ( VAL( nkkm ) != 0, nkkm, СписокТоваров.tovar_firm ); // Фронтол 5.9 перестал понимать 22-е поле адекватно. Теперь оно выгружается как код группы печати чека, если не указано иное/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ mBarcode = ALLTRIM( СписокТоваров.barcode );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ rsubject = СписокТоваров.spr_rsubject;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( VAL( СписокТоваров.spr_paytype ) == 1 OR VAL( СписокТоваров.spr_paytype ) == 2 )/##CHR(13)##//##CHR(10)##/ mPaytype = СписокТоваров.spr_paytype;/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ mPaytype = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mName = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( name ), sprres_name ), 100 );/##CHR(13)##//##CHR(10)##/ mCname = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( cname ), sprres_shortname ), 100 ); // Краткое наименование используется для чека/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокТоваров.sprres_alcotype ) == 1;/##CHR(13)##//##CHR(10)##/ РазливнойАлко = mAlco AND LOWER( ALLTRIM( СписокТоваров.sprres_ed ) ) == ''л'';/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = VAL( СписокТоваров.sprres_alcotype ) == 2;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( СписокТоваров.sprres_nnvid, "481" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = false;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mNNVid = СписокТоваров.sprres_nnvid;/##CHR(13)##//##CHR(10)##/ mVolume = STR( ЕСЛИ( VAL( СписокТоваров.spregais_d_litr ) != 0, СписокТоваров.spregais_d_litr, СписокТоваров.sprres_d_litr ), 10, 6 );/##CHR(13)##//##CHR(10)##/ mAProc = STR( СписокТоваров.sprres_a_proc, 10, 2 );/##CHR(13)##//##CHR(10)##/ mEnterPrice = СписокТоваров.sprres_enterprice;/##CHR(13)##//##CHR(10)##/ mNoEnterquantity = СписокТоваров.noenterquantity;/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //значение по умолчанию - обычный товар/##CHR(13)##//##CHR(10)##/ mSIZmark = "";/##CHR(13)##//##CHR(10)##/ mF_marknotrequire = 1;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_mark )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //Код группы маркируемого товара:/##CHR(13)##//##CHR(10)##/ //0005 - табачная продукция, /##CHR(13)##//##CHR(10)##/ //1520 - обувь, /##CHR(13)##//##CHR(10)##/ //0002 - изделия из меха, /##CHR(13)##//##CHR(10)##/ //0003 - лекарственные препараты, /##CHR(13)##//##CHR(10)##/ //9999 - прочая, /##CHR(13)##//##CHR(10)##/ //9998 - легпром, /##CHR(13)##//##CHR(10)##/ //9997 - шины, /##CHR(13)##//##CHR(10)##/ //9996 - фото, /##CHR(13)##//##CHR(10)##/ //9995 - духи и парфюм, /##CHR(13)##//##CHR(10)##/ //9994 - альтернативный табак, /##CHR(13)##//##CHR(10)##/ //9993 - молочная продукция, /##CHR(13)##//##CHR(10)##/ //9992 - вода/##CHR(13)##//##CHR(10)##/ //9991 - ювелирная продукция/##CHR(13)##//##CHR(10)##/ //9990 - никотинсодержащая продукция/##CHR(13)##//##CHR(10)##/ //9989 - пиво и пивные напитки/##CHR(13)##//##CHR(10)##/ //Все то что отмечено флагом "Маркированный", но со значением отличным от перечисленных, выгружается как значение 7 - прочая маркировка/##CHR(13)##//##CHR(10)##/ //0000 - СИЗ - выгружается как обычный товар/##CHR(13)##//##CHR(10)##/ mMarkGroup = ЕСЛИ( СписокТоваров.sprres_markgroup == "0002", 2, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0003", 3, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0005", 4, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "1520", 5, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9999", 7, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9998", 11, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9997", 10, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9996", 8, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9995", 9, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9994", 12, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9993", 13, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9991", 14, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9992", 15, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9990", 16,/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0000", 0, 7 ) ) ) ) ) ) ) ) ) ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //для СИЗ передадим код из поля GTIN в 64 поле/##CHR(13)##//##CHR(10)##/ mSIZmark = ЕСЛИ( СписокТоваров.sprres_markgroup == "0000", СписокТоваров.sprres_gtin, "");/##CHR(13)##//##CHR(10)##/ mF_marknotrequire = ЕСЛИ( СписокТоваров.sprres_f_marknotrequire,1,0);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //для крепкого алкоголя и пива устанавливаем свои признаки /##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 1; //алкогольная продукция/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 1 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 18; //разливное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 0 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 17; //фасованное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( ПивнаяПродукция )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //обычный товар/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_make ) /##CHR(13)##//##CHR(10)##/ rsubject = "5";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_cat == "002" )/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 2 ) //подакцизный товар/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 3 ) //работа/##CHR(13)##//##CHR(10)##/ rsubject = "3";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 4 ) //услуга/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 13 ) //иной предмет расчета/##CHR(13)##//##CHR(10)##/ rsubject = "6";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 10 ) //платеж/##CHR(13)##//##CHR(10)##/ rsubject = "7"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 11 ) //агентское вознаграждение/##CHR(13)##//##CHR(10)##/ rsubject = "8"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 7 ) //лотерейный билет/##CHR(13)##//##CHR(10)##/ rsubject = "9"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 9 ) //результаты интеллектуальной деятельности/##CHR(13)##//##CHR(10)##/ rsubject = "10";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 12 ) //выплата/##CHR(13)##//##CHR(10)##/ rsubject = "11";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 18 ) //курортный сбор/##CHR(13)##//##CHR(10)##/ rsubject = "12";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 27 ) //выдача денежных средств/##CHR(13)##//##CHR(10)##/ rsubject = "13";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_agentware == true AND !ПУСТО(СписокТоваров.sprres_vendor) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAgentDetailsCode = VAL(СписокТоваров.sprres_vendor);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СписокТоваров.ffdcode))/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.ffdcode == 0 )/##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 10 )/##CHR(13)##//##CHR(10)##/ mffdcode = 1;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 11 )/##CHR(13)##//##CHR(10)##/ mffdcode = 2; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 12 )/##CHR(13)##//##CHR(10)##/ mffdcode = 3;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 20 )/##CHR(13)##//##CHR(10)##/ mffdcode = 4; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 21 )/##CHR(13)##//##CHR(10)##/ mffdcode = 5;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 22 )/##CHR(13)##//##CHR(10)##/ mffdcode = 6;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 30 )/##CHR(13)##//##CHR(10)##/ mffdcode = 7;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 31 )/##CHR(13)##//##CHR(10)##/ mffdcode = 8;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 32 )/##CHR(13)##//##CHR(10)##/ mffdcode = 9;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 40 )/##CHR(13)##//##CHR(10)##/ mffdcode = 10; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 41 )/##CHR(13)##//##CHR(10)##/ mffdcode = 11; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 42 )/##CHR(13)##//##CHR(10)##/ mffdcode = 12;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 50 )/##CHR(13)##//##CHR(10)##/ mffdcode = 13;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 51 )/##CHR(13)##//##CHR(10)##/ mffdcode = 14; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 70 )/##CHR(13)##//##CHR(10)##/ mffdcode = 15; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 71 )/##CHR(13)##//##CHR(10)##/ mffdcode = 16; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 72 )/##CHR(13)##//##CHR(10)##/ mffdcode = 17; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 73 )/##CHR(13)##//##CHR(10)##/ mffdcode = 18;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 80 )/##CHR(13)##//##CHR(10)##/ mffdcode = 19; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 81 )/##CHR(13)##//##CHR(10)##/ mffdcode = 20; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 82 )/##CHR(13)##//##CHR(10)##/ mffdcode = 21; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 83 )/##CHR(13)##//##CHR(10)##/ mffdcode = 22; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 255 )/##CHR(13)##//##CHR(10)##/ mffdcode = 23; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mCena = ALLTRIM( STR( СписокТоваров.cena, 8, 2 ) );/##CHR(13)##//##CHR(10)##/ //------ Обрабатываем товары, у которых не нулевая цена./##CHR(13)##//##CHR(10)##/ //------ Если указано грузить все, то грузим с любой ценой/##CHR(13)##//##CHR(10)##/ //------ Если товар заголовочный (есть разререзы), то цена тоже не важна/##CHR(13)##//##CHR(10)##/ IF ( !ТОВАРЫБЕЗЦЕНЫ AND VAL( mCena ) <= 0 AND !f_hchild )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mMin_cena = IIF( !EMPTY( min_cena ), ALLTRIM( STR( min_cena, 8, 2 ) ), "");/##CHR(13)##//##CHR(10)##/ // Расчитываем срок хранения/##CHR(13)##//##CHR(10)##/ mStore_period = IIF( store_period <> 0, ALLTRIM( DTOC( store_period + DATE( ) ) ), "" );/##CHR(13)##//##CHR(10)##/ // Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_sch = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", ALLTRIM( nngroup ) );/##CHR(13)##//##CHR(10)##/ // Вариант использования разрезов: 0 — полный список; 1 — заданный список; 2 — заданный список с остатком/##CHR(13)##//##CHR(10)##/ mAspect_var = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", IIF( saldotype > 0, "2", "1" ) );/##CHR(13)##//##CHR(10)##/ // Код родительской группы/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( parent == 0, 0, ABS( parent ) + IIF(parent < 0, 2000000000, 1000000000 ) ) ) );/##CHR(13)##//##CHR(10)##/ // Код налога/##CHR(13)##//##CHR(10)##/ mKodn = IIF( f_nalogs, ALLTRIM( STR( VAL( kodn ) ) ), "" );/##CHR(13)##//##CHR(10)##/ //если в карточке фирмы установлен флаг "Не является плательщиком НДС", то выгружаем ставку БезНДС для товара/##CHR(13)##//##CHR(10)##/ IF ( f_nalogs AND firm_fwonds )/##CHR(13)##//##CHR(10)##/ mKodn = ALLTRIM( STR( VAL( СтавкаБезНДС ) ) );/##CHR(13)##//##CHR(10)##/ // Артикул/##CHR(13)##//##CHR(10)##/ mArticle = LEFT( ALLTRIM( article ), 20 );/##CHR(13)##//##CHR(10)##/ // Путь к картинке/##CHR(13)##//##CHR(10)##/ mImage_path = ALLTRIM( image_path );/##CHR(13)##//##CHR(10)##/ mNote = STDE( note );/##CHR(13)##//##CHR(10)##/ mKkm_section = ALLTRIM( STR( VAL( kkm_section ) ) );/##CHR(13)##//##CHR(10)##/ // Принтер для печати чеков/##CHR(13)##//##CHR(10)##/ mCheckPrinter = ALLTRIM( checkPrinter );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mFlags = ЕСЛИ( fractqty OR waretype == 0 OR РазливнойАлко, "1", "0") + "," + //1. дробное количество (весовой)/##CHR(13)##//##CHR(10)##/ "1" + "," + //2. продажа/##CHR(13)##//##CHR(10)##/ "1" + "," + //3. возврат/##CHR(13)##//##CHR(10)##/ "1" + "," + //4. отрицательные остатки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "1", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "0", "1" ) ) + "," + //5. без ввода количества/##CHR(13)##//##CHR(10)##/ "1" + "," + //6. списание остатков/##CHR(13)##//##CHR(10)##/ "1" + "," + //7. редактирование цены /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "0", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "1", "0" ) ) + "," + //8. ввод количества вручную/##CHR(13)##//##CHR(10)##/ "," + //9. печатать в чеке/##CHR(13)##//##CHR(10)##/ "," + //10. наливаемый товар/##CHR(13)##//##CHR(10)##/ "," + //11. скидки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( mEnterPrice, "1", "" ) + "," + //12. запрос цены/##CHR(13)##//##CHR(10)##/ "," + //13. запрос штрихкода/##CHR(13)##//##CHR(10)##/ "," + //14. округление/##CHR(13)##//##CHR(10)##/ ","; //15. деление упаковки/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mFlagsV = ЕСЛИ( fractqty OR waretype == 0, "1", "0") + "," + //1. дробное количество (весовой)/##CHR(13)##//##CHR(10)##/ "0" + "," + //2. продажа/##CHR(13)##//##CHR(10)##/ "0" + "," + //3. возврат/##CHR(13)##//##CHR(10)##/ "1" + "," + //4. отрицательные остатки/##CHR(13)##//##CHR(10)##/ "1" + "," + //5. без ввода количества/##CHR(13)##//##CHR(10)##/ "1" + "," + //6. списание остатков/##CHR(13)##//##CHR(10)##/ "1" + "," + //7. редактирование цены/##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "1", "0" ) + "," + //8. ввод количества вручную/##CHR(13)##//##CHR(10)##/ "," + //9. печатать в чеке/##CHR(13)##//##CHR(10)##/ "," + //10. наливаемый товар/##CHR(13)##//##CHR(10)##/ "," + //11. скидки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( mEnterPrice, "1", "" ) + "," + //12. запрос цены/##CHR(13)##//##CHR(10)##/ "," + //13. запрос штрихкода/##CHR(13)##//##CHR(10)##/ "," + //14. округление/##CHR(13)##//##CHR(10)##/ ","; //15. деление упаковки/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mActionPriz = IIF( f_action == 0, IIF( maxdiscount == -1, "", ALLTRIM( STR( maxdiscount, 16, 2 ) ) ), "0");/##CHR(13)##//##CHR(10)##/ // Остаток и PLU/##CHR(13)##//##CHR(10)##/ mTmcSaldo = ALLTRIM( STR( kolp, 10, 3 ) );/##CHR(13)##//##CHR(10)##/ mPlu = ALLTRIM( plu );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mDsc_value = "";/##CHR(13)##//##CHR(10)##/ mVtype = "";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Если у товара указан код скидки, то надо вычислить ее значение/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( discount ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если надо вычислить значение скидки, то вычисляем ее/##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( value );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Вычисляем и подставляем Коды Групп печати/##CHR(13)##//##CHR(10)##/ IF ( !_ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( mFr_code ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ kodGrPintChek = mFr_code;/##CHR(13)##//##CHR(10)##/ kodGrPintCopy = mFr_code;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" //1. Идентификатор товара (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + mBarcode + ";" //2. Штрихкод (Строка 1024)/##CHR(13)##//##CHR(10)##/ + STDE( mName, 100 ) + ";" //3. Наименование (Строка 128)/##CHR(13)##//##CHR(10)##/ + STDE( mCname, 100 ) + ";" //4. Наименование для печати (Строка 128)/##CHR(13)##//##CHR(10)##/ + mCena + ";" //5. Цена (Дробное)/##CHR(13)##//##CHR(10)##/ + mTmcSaldo + ";" //6. Остаток (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + ";" //7. - (Целое)/##CHR(13)##//##CHR(10)##/ + mFlags + ";" //8. флаги (Строка)/##CHR(13)##//##CHR(10)##/ + mMin_cena + ";" //9. минимальная цена (Дробное)/##CHR(13)##//##CHR(10)##/ + mStore_period + ";" //10. срок годности (Дата)/##CHR(13)##//##CHR(10)##/ + mAspect_sch + ";" //11. код схемы разрезов (Целое)/##CHR(13)##//##CHR(10)##/ + mAspect_var + ";" //12. вариант использования разрезов (Целое)/##CHR(13)##//##CHR(10)##/ + rsubject + ";" //13. признак предмета расчета (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //14. коэффициент штрихкода (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + ";" //15. - (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + mParent + ";" //16. Код родительской группы (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + "1;" //17. товар или группа: 0 - группа, 1 - товар (Целое 1)/##CHR(13)##//##CHR(10)##/ + ";" //18. - (Целое)/##CHR(13)##//##CHR(10)##/ + "0;" //19. - (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //20. серия (Строка 100)/##CHR(13)##//##CHR(10)##/ + ";" //21. сертификат (Строка 100)/##CHR(13)##//##CHR(10)##/ + ";" //22. - (Целое)/##CHR(13)##//##CHR(10)##/ + mKodn + ";" //23. Код налоговой группы (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //24. Код весов с ПЭ (Целое, по умолчанию = 0)/##CHR(13)##//##CHR(10)##/ + mPlu + ";" //25. Код товара в весах ПЭ. (Целое, max = 999999999)/##CHR(13)##//##CHR(10)##/ + mArticle + ";" //26. Артикул (Строка 20)/##CHR(13)##//##CHR(10)##/ + mVtype + ";" //27. Тип скидки (Целое, 0-процентная, м.б. только %-я)/##CHR(13)##//##CHR(10)##/ + mDsc_value + ";" //28. Значение скидки (строка 100)/##CHR(13)##//##CHR(10)##/ + mActionPriz + ";" //29. Максимальная скидка (Дробное)/##CHR(13)##//##CHR(10)##/ + mCheckPrinter + ";" //30. Код группы печати (Целое, особенности в рук.интегратора)/##CHR(13)##//##CHR(10)##/ + mImage_path + ";" //31. Файл с картинкой (Строка) *.bmp, *.jpg, *.jpeg, *.wmf, *.ico, *.emf, *.svg, *.png/##CHR(13)##//##CHR(10)##/ + mNote + ";" //32. Описание (строка)/##CHR(13)##//##CHR(10)##/ + ";" //33. Кратность количества (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + "0;" //34. Код ценника (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //35. Тип вознаграждения (Целое). 0- процентное, 1- суммовое. По умолчанию =0/##CHR(13)##//##CHR(10)##/ + ";" //36. Значение вознаграждения (Дробное)/##CHR(13)##//##CHR(10)##/ + mKkm_section + ";" //37. Номер секции ККМ (Целое, max = 99). По умолчанию =0 /##CHR(13)##//##CHR(10)##/ + ";" //38. ГТД (строка 100)/##CHR(13)##//##CHR(10)##/ + kodGrPintChek + ";" //39. Код группы печати чека (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintCopy + ";" //40. Код группы печати копии (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintInvoice + ";" //41. Код группы печати счета (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintMark + ";" //42. Код группы печати марки (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //43. Код предприятия (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //44. - (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //45. Номер сообщения в весах с ПЭ (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //46. - /##CHR(13)##//##CHR(10)##/ + vizualmodif + ";" //47. Значение флага "Визуальный выбор модификаторов при регистрации" (Целое)/##CHR(13)##//##CHR(10)##/ + ЛеваяГраница + ";" //48. Левая граница допустимого суммарного удельного веса модификаторов (Целое)/##CHR(13)##//##CHR(10)##/ + ПраваяГраница + ";" //49. Правая граница допустимого суммарного удельного веса модификаторов (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //50. Текстовое сообщение для весов с ПЭ (строка)/##CHR(13)##//##CHR(10)##/ + ";" //51. -/##CHR(13)##//##CHR(10)##/ + mF_marknotrequire + ";"; //52. Значение флага «Разрешить регистрацию без штрихкода маркировки» (Целое)/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ( mAlco OR ПивнаяПродукция ) AND !РазливнойАлко )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += mNNVid + ";" //53. Код вида алкогольной / спиртосодержащей продукции Значение по умолчанию: 10. (Целое)/##CHR(13)##//##CHR(10)##/ + mVolume + ";" //54. Емкость тары, л Значение по умолчанию: 1,000. (Дробное 10.6)/##CHR(13)##//##CHR(10)##/ + mMarkGroup + ";" //55. Тип номенклатуры (Целое)/##CHR(13)##//##CHR(10)##/ + ЕСЛИ( ПивнаяПродукция, "1", "0" ) + ";" //56. Маркировка алкогольной продукции (Целое)/##CHR(13)##//##CHR(10)##/ + mAProc + ";"; //57. Крепость алкогольной продукции, % (Дробное). Значение по умолчанию: 0,1/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( РазливнойАлко )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //Обычный товар/##CHR(13)##//##CHR(10)##/ Строка += ";" //53. Код вида алкогольной / спиртосодержащей продукции Значение по умолчанию: 10. (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //54. Емкость тары, л Значение по умолчанию: 1,000. (Дробное 10.6)/##CHR(13)##//##CHR(10)##/ + mMarkGroup + ";" //55. Тип номенклатуры (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //56. Маркировка алкогольной продукции (Целое)/##CHR(13)##//##CHR(10)##/ + ";"; //57. Крепость алкогольной продукции, % (Дробное). Значение по умолчанию: 0,1/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка += mPaytype + ";" //58.Признак способа расчета: 1 – аванс; 2 – полный расчет. Значение по умолчанию: 2./##CHR(13)##//##CHR(10)##/ + ЕСЛИ( !ПУСТО(mAgentDetailsCode), mAgentDetailsCode, "" ) + ";" //59. Код реквизитов агента (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //60. Сумма акциза (Дробное)/##CHR(13)##//##CHR(10)##/ + ";" //61. Код страны происхождения товара (Строка 3)/##CHR(13)##//##CHR(10)##/ + ";" //62. Номер таможенной декларации (Строка 32)/##CHR(13)##//##CHR(10)##/ + ";" //63. Наименование лотереи (Целое)/##CHR(13)##//##CHR(10)##/ + mSIZmark + ";" //64. Код вида номенклатурной классификации (EAN-13) (Строка 13)/##CHR(13)##//##CHR(10)##/ + ";" //65. Проверка соответствия товара штрихкоду маркировки (Целое). 0 – по штрихкодам товара; 1 – по штрихкоду регистрации./##CHR(13)##//##CHR(10)##/ + mffdcode; //66. Мера количества предмета расчета (Целое)/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если разливной алкоголь, то добавляем еще одну строку с кодом + 90000000/##CHR(13)##//##CHR(10)##/ IF ( РазливнойАлко )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mffdcode = 11; //литр/##CHR(13)##//##CHR(10)##/ Строка = STR( VAL( mCode ) + 90000000 ) + ";" //1. Идентификатор товара (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + ЕСЛИ( _ВЫГРУЖАТЬШКДЛЯРАЗЛИВНОЙПРОДУКЦИИ_ФРОНТОЛ52, mBarcode, "" ) + ";" //2. Штрихкод (Строка 1024)/##CHR(13)##//##CHR(10)##/ + STDE( "ВТ " + mName, 100 ) + ";" //3. Наименование (Строка 128)/##CHR(13)##//##CHR(10)##/ + STDE( "ВТ " + mCname, 100 ) + ";" //4. Наименование для печати (Строка 128)/##CHR(13)##//##CHR(10)##/ + mCena + ";" //5. Цена (Дробное)/##CHR(13)##//##CHR(10)##/ + mTmcSaldo + ";" //6. Остаток (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + ";" //7. - (Целое)/##CHR(13)##//##CHR(10)##/ + mFlagsV + ";" //8. флаги (Строка)/##CHR(13)##//##CHR(10)##/ + mMin_cena + ";" //9. минимальная цена (Дробное)/##CHR(13)##//##CHR(10)##/ + mStore_period + ";" //10. срок годности (Дата)/##CHR(13)##//##CHR(10)##/ + mAspect_sch + ";" //11. код схемы разрезов (Целое)/##CHR(13)##//##CHR(10)##/ + mAspect_var + ";" //12. вариант использования разрезов (Целое)/##CHR(13)##//##CHR(10)##/ + rsubject + ";" //13. признак предмета расчета (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //14. коэффициент штрихкода (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + ";" //15. - (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + mParent + ";" //16. Код родительской группы (Строка 20/ Целое)/##CHR(13)##//##CHR(10)##/ + "1;" //17. товар или группа: 0 - группа, 1 - товар (Целое 1)/##CHR(13)##//##CHR(10)##/ + ";" //18. - (Целое)/##CHR(13)##//##CHR(10)##/ + "0;" //19. - (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //20. серия (Строка 100)/##CHR(13)##//##CHR(10)##/ + ";" //21. сертификат (Строка 100)/##CHR(13)##//##CHR(10)##/ + ";" //22. - (Целое)/##CHR(13)##//##CHR(10)##/ + mKodn + ";" //23. Код налоговой группы (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //24. Код весов с ПЭ (Целое, по умолчанию = 0)/##CHR(13)##//##CHR(10)##/ + mPlu + ";" //25. Код товара в весах ПЭ. (Целое, max = 999999999)/##CHR(13)##//##CHR(10)##/ + "Для вскрытия тары;" //26. Артикул (Строка 20)/##CHR(13)##//##CHR(10)##/ + mVtype + ";" //27. Тип скидки (Целое, 0-процентная, м.б. только %-я)/##CHR(13)##//##CHR(10)##/ + mDsc_value + ";" //28. Значение скидки (строка 100)/##CHR(13)##//##CHR(10)##/ + mActionPriz + ";" //29. Максимальная скидка (Дробное)/##CHR(13)##//##CHR(10)##/ + mCheckPrinter + ";" //30. Код группы печати (Целое, особенности в рук.интегратора)/##CHR(13)##//##CHR(10)##/ + mImage_path + ";" //31. Файл с картинкой (Строка) *.bmp, *.jpg, *.jpeg, *.wmf, *.ico, *.emf, *.svg, *.png/##CHR(13)##//##CHR(10)##/ + mNote + ";" //32. Описание (строка)/##CHR(13)##//##CHR(10)##/ + ";" //33. Кратность количества (Дробное 7.4)/##CHR(13)##//##CHR(10)##/ + "0;" //34. Код ценника (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //35. Тип вознаграждения (Целое). 0- процентное, 1- суммовое. По умолчанию =0/##CHR(13)##//##CHR(10)##/ + ";" //36. Значение вознаграждения (Дробное)/##CHR(13)##//##CHR(10)##/ + mKkm_section + ";" //37. Номер секции ККМ (Целое, max = 99). По умолчанию =0 /##CHR(13)##//##CHR(10)##/ + ";" //38. ГТД (строка 100)/##CHR(13)##//##CHR(10)##/ + kodGrPintChek + ";" //39. Код группы печати чека (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintCopy + ";" //40. Код группы печати копии (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintInvoice + ";" //41. Код группы печати счета (Целое)/##CHR(13)##//##CHR(10)##/ + kodGrPintMark + ";" //42. Код группы печати марки (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //43. Код предприятия (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //44. - (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //45. Номер сообщения в весах с ПЭ (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //46. - /##CHR(13)##//##CHR(10)##/ + vizualmodif + ";" //47. Значение флага "Визуальный выбор модификаторов при регистрации" (Целое)/##CHR(13)##//##CHR(10)##/ + ЛеваяГраница + ";" //48. Левая граница допустимого суммарного удельного веса модификаторов (Целое)/##CHR(13)##//##CHR(10)##/ + ПраваяГраница + ";" //49. Правая граница допустимого суммарного удельного веса модификаторов (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //50. Текстовое сообщение для весов с ПЭ (строка)/##CHR(13)##//##CHR(10)##/ + ";" //51. -/##CHR(13)##//##CHR(10)##/ + mF_marknotrequire + ";" //52. Значение флага «Разрешить регистрацию без штрихкода маркировки» (Целое)/##CHR(13)##//##CHR(10)##/ + mNNVid + ";" //53. Код вида алкогольной / спиртосодержащей продукции Значение по умолчанию: 10. (Целое)/##CHR(13)##//##CHR(10)##/ + mVolume + ";" //54. Емкость тары, л Значение по умолчанию: 1,000. (Дробное 10.6)/##CHR(13)##//##CHR(10)##/ + "1;" //55. Тип номенклатуры (Целое)/##CHR(13)##//##CHR(10)##/ + ЕСЛИ( ПивнаяПродукция, "1", "0" ) + ";" //56. Маркировка алкогольной продукции (Целое)/##CHR(13)##//##CHR(10)##/ + mAProc + ";" //57. Крепость алкогольной продукции, % (Дробное). Значение по умолчанию: 0,1 /##CHR(13)##//##CHR(10)##/ + mPaytype + ";" //58.Признак способа расчета: 1 – аванс; 2 – полный расчет. Значение по умолчанию: 2./##CHR(13)##//##CHR(10)##/ + ЕСЛИ( !ПУСТО(mAgentDetailsCode), mAgentDetailsCode, "" ) + ";" //59. Код реквизитов агента (Целое)/##CHR(13)##//##CHR(10)##/ + ";" //60. Сумма акциза (Дробное)/##CHR(13)##//##CHR(10)##/ + ";" //61. Код страны происхождения товара (Строка 3)/##CHR(13)##//##CHR(10)##/ + ";" //62. Номер таможенной декларации (Строка 32)/##CHR(13)##//##CHR(10)##/ + ";" //63. Наименование лотереи (Целое)/##CHR(13)##//##CHR(10)##/ + mSIZmark + ";" //64. Код вида номенклатурной классификации (EAN-13) (Строка 13)/##CHR(13)##//##CHR(10)##/ + ";" //65. Проверка соответствия товара штрихкоду маркировки (Целое). 0 – по штрихкодам товара; 1 – по штрихкоду регистрации./##CHR(13)##//##CHR(10)##/ + mffdcode; //66. Мера количества предмета расчета (Целое)/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Отмечаем в таблице штриховых кодов, что товар был выгружен/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ШТРИХКОДЫ + " SET used= 1 WHERE code= ''" + code + "''" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ("СписокТоваров");/##CHR(13)##//##CHR(10)##/ИНДИКАТОР();/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ();/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',212.00000000,'//Выгрузка остатков по разрезам в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем команду - либо заменить (обновить) информацию о разрезах, либо добавить/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEASPECTREMAINSWITHOUTSALE", "$$$ADDASPECTREMAINS" ) );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT t1.code AS subcode, t1.nngroup, t1.aspect, t1.kolp, t1.cena, t2.code /##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " t2 ON t1.subcode = t2.nn /##CHR(13)##//##CHR(10)##/ WHERE t1.f_subres = 1 AND t1.nngroup <> '''' AND t1.cena >" + IIF( !ТОВАРЫБЕЗЦЕНЫ, "", "=" ) + " 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоваров.nngroup + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ aspectList = "";/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ aspectValue = ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоваров.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ // Для тех разрезов, для которых нет значения для данного товара, проставляем специальное значение 999999999/##CHR(13)##//##CHR(10)##/ aspectList = aspectList + IIF( !EMPTY( aspectList ), ",", "" ) + ЕСЛИ( aspectValue == "0", "999999999", aspectValue ); /##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ // Если удалось собрать список кодов - формируем строку в файле/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( aspectList ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Строка в формате АТОЛ/##CHR(13)##//##CHR(10)##/ // остаток только если Признак загрузки остатков не равен "не надо загружать"/##CHR(13)##//##CHR(10)##/ Строка = code + ";" + IIF( saldotype <> 0,STR( kolp, 10, 3 ), "0") + ";" + /##CHR(13)##//##CHR(10)##/ aspectList + ";" + ALLTRIM( STR( cena, 8, 2 ) ) + ";;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // Записываем в таблицу штриховых кодов, список разрезов /##CHR(13)##//##CHR(10)##/ ЗАПРОС("UPDATE " + ШТРИХКОДЫ + " SET aspectlist= ''" + aspectList + "'', used= 1, code = ''"+code+"'' WHERE code= ''" + subcode + "''");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',213.00000000,'//Выгрузка штриховых кодов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Штриховые коды идут в конце файла, после всех товаров /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDBARCODES" );--DISTINCT /##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT barcode, code, koef, aspectlist FROM " + ШТРИХКОДЫ + " /##CHR(13)##//##CHR(10)##/ WHERE used = 1 AND barcode <> '''' GROUP BY barcode, code, koef, aspectlist ", "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокШтрихКодов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( barcode ) + ";" + ALLTRIM( code ) + ";" + ALLTRIM( aspectlist ) + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ, ALLTRIM( STRTRAN( VAL( STR( koef, 7, 4 ) ), ",", ALLTRIM( delimiter ) ) ), "1" ) + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',214.00000000,'//Завершение выгрузки товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //Выгрузка модификаторов и групп модификаторов товаров в ККМ./##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMODIFIERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Сначала группы/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code, name, identity_column, f_singleModifier, f_repeateModifier /##CHR(13)##//##CHR(10)##/ FROM sprnnlink_groups/##CHR(13)##//##CHR(10)##/ WHERE nn = '''' AND parent= 0", "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокГруппКомплектации" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ) + 1000000000 ) ) + ";;1;" + STDE( name ) + ";" + STDE( name ) + /##CHR(13)##//##CHR(10)##/ ";;;" + ЕСЛИ( f_singleModifier, "1", "0" ) + ";" + ЕСЛИ( f_repeateModifier, "1", "0" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь второй уровень групп/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code, name, identity_column, f_singleModifier, f_repeateModifier/##CHR(13)##//##CHR(10)##/ FROM sprnnlink_groups/##CHR(13)##//##CHR(10)##/ WHERE nn = '''' AND parent= " + СписокГруппКомплектации.identity_column, "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокГруппКомплектацииУровень2" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ) + 1000000000 ) ) + ";" + ALLTRIM( STR( VAL( СписокГруппКомплектации.code ) + 1000000000 ) ) + ";1;" + STDE( name ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( name ) + ";;;" + ЕСЛИ( f_singleModifier, "1", "0" ) + ";" + ЕСЛИ( f_repeateModifier, "1", "0" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь третий уровень групп/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code, name, identity_column, f_singleModifier, f_repeateModifier /##CHR(13)##//##CHR(10)##/ FROM sprnnlink_groups/##CHR(13)##//##CHR(10)##/ WHERE nn = '''' AND parent= " + СписокГруппКомплектацииУровень2.identity_column, "СписокГруппКомплектацииУровень3" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектацииУровень3" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокГруппКомплектацииУровень3" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ) + 1000000000 ) ) + ";" + ALLTRIM( STR( VAL( СписокГруппКомплектацииУровень2.code ) + 1000000000 ) ) + ";1;" + /##CHR(13)##//##CHR(10)##/ STDE( name ) + ";" + STDE( name ) + ";;;" + ЕСЛИ( f_singleModifier, "1", "0" ) + ";" + ЕСЛИ( f_repeateModifier, "1", "0" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокГруппКомплектацииУровень3" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокГруппКомплектацииУровень2" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокГруппКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь саму комплектацию/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT sprres.maincode, nnlinks.group_, nnlinks.kolp_1, sprres.name, nnlinks.identity_column/##CHR(13)##//##CHR(10)##/ FROM sprnnlinks nnlinks/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres sprres ON nnlinks.nn_r = sprres.code /##CHR(13)##//##CHR(10)##/ WHERE nnlinks.nn = '''' AND nnlinks.group_ <> ''''", "СписокКомплектации" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокКомплектации" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( identity_column ) ) + ";" + ALLTRIM( STR( VAL( group_ ) + 1000000000 ) ) + ";0;" + STDE( name ) + ";" + STDE( name ) + ";"+/##CHR(13)##//##CHR(10)##/ ALLTRIM( STR( VAL( maincode ) ) ) + ";" + ALLTRIM( STR( kolp_1, 10, 3 ) ) + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь связи групп и товаров/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMODIFIERLINKS" );/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT sprres.maincode, nnlinks.group_/##CHR(13)##//##CHR(10)##/ FROM sprnnlinks nnlinks/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres sprres ON nnlinks.nn = sprres.code /##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " temp ON temp.nn = sprres.code/##CHR(13)##//##CHR(10)##/ WHERE nnlinks.nn_r = '''' AND nnlinks.group_ <> ''''", "СписокКомплектации" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокКомплектации" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( group_ ) + 1000000000 ) ) + ";" + ALLTRIM( STR( VAL( maincode ) ) );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокКомплектации" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Если производим выгрузку из плана-меню, то формируем строки для меню/##CHR(13)##//##CHR(10)##/ IF ( КОДДОКУМЕНТА == "054" OR ЕСЛИ( !ПУСТО( СПИСОКДОКУМЕНТОВ ), ЗАПРОС( "SELECT code FROM " + СПИСОКДОКУМЕНТОВ + " WHERE code = ''054''" ) == "054", false ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 1 ] = "Понедельник";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 2 ] = "Вторник";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 3 ] = "Среда";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 4 ] = "Четверг";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 5 ] = "Пятница";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 6 ] = "Суббота";/##CHR(13)##//##CHR(10)##/ ДНИНЕДЕЛИ[ 7 ] = "Воскресенье";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Добавляем команду удаления меню из Фронтол/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СПИСОКДОКУМЕНТОВ ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLMENUS" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT ic FROM " + СПИСОКДОКУМЕНТОВ + " WHERE code = ''054''", "СписокДокументов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT " + ИДДОКУМЕНТА + " AS ic", "СписокДокументов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE( !КОНЕЦКОНТЕКСТА( "СписокДокументов" ) ) /##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИДДОКУМЕНТА = СписокДокументов.ic;/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT spr.date, sprnn.maincode /##CHR(13)##//##CHR(10)##/ FROM spr054 spr/##CHR(13)##//##CHR(10)##/ INNER JOIN spec054 spec ON spec.ic = spr.identity_column/##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON spec.nn = sprnn.nn/##CHR(13)##//##CHR(10)##/ WHERE spr.identity_column= " + ИДДОКУМЕНТА, "ПланМеню" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ НОМЕРДНЯ = ДЕНЬНЕДЕЛИ( ПланМеню.date );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMENUS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( НОМЕРДНЯ ) + ";Меню на " + ДНИНЕДЕЛИ[ НОМЕРДНЯ ] + ";Меню на " + ДНИНЕДЕЛИ[ НОМЕРДНЯ ] );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMENUPERIODS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( НОМЕРДНЯ ) + ";1;" + ДНИНЕДЕЛИ[ НОМЕРДНЯ ] + ";;;;;;" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 1, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 2, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 3, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 4, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 5, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 6, "1", "0" ) + "," + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( НОМЕРДНЯ == 7, "1", "0" ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMENULINKS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "ПланМеню" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( НОМЕРДНЯ ) + ";1;" + ПланМеню.maincode );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "ПланМеню" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "ПланМеню" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокДокументов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ } // Окончание выгрузки из Плана меню/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Если надо, то выгружаем алкокоды/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгрузка алкокодов /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDALCCODES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT sprnn.maincode, sprnn.nnvid, sprnn.ed, egais.alcocode,/##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprnn.nnvid ) AS alcotype/##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON sprnn.maincode = t1.code/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_egais egais ON egais.code = sprnn.nn/##CHR(13)##//##CHR(10)##/ WHERE egais.alcocode <> ''''", "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ // Если продукция разливная, то алкокод связываем со второй карточкой, которая для вскрытия тары/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАлкокодов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокАлкокодов.alcotype ) == 1 AND !ВСПИСКЕ( СписокАлкокодов.nnvid, "481" );/##CHR(13)##//##CHR(10)##/ РазливнойАлко = mAlco AND LOWER( ALLTRIM( СписокАлкокодов.ed ) ) == ''л'';/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ЕСЛИ( РазливнойАлко, STR( VAL( СписокАлкокодов.maincode ) + 90000000 ), СписокАлкокодов.maincode ) + ";" + СписокАлкокодов.alcocode );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬСПЕЦЦЕНЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгрузка спец цен из переоценки/##CHR(13)##//##CHR(10)##/ // Выводим все переоценки, для которых еще не закончилась акция/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT * FROM spr005 /##CHR(13)##//##CHR(10)##/ WHERE DATEDIFF( day, endaction, GETDATE( ) ) <= 0 AND EXISTS( SELECT * FROM reg008 WHERE code =''005'' AND ic = spr005.identity_column ) /##CHR(13)##//##CHR(10)##/ ORDER BY identity_column", "Переоценка" );/##CHR(13)##//##CHR(10)##/ // Правило объединения - максимальная скидка/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$CHANGEMARKETINGACTIONSUNION" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "2;2" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "Переоценка" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ КОДАКЦИИ = STR( 1000000000 + Переоценка.identity_column );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT sprnn.maincode AS subcode, sprnn.nngroup, sprnn.d_code AS aspect, spec.cena, sprnn.f_subres, sprnn_main.maincode AS code /##CHR(13)##//##CHR(10)##/ FROM spec005 spec /##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON spec.nn = sprnn.nn/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprnn sprnn_main ON sprnn.subcode = sprnn_main.nn /##CHR(13)##//##CHR(10)##/ WHERE spec.cena > 0 AND spec.ic = " + Переоценка.identity_column, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокТоваров" ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "Переоценка" );/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КОДАКЦИИ + ";" + DTOC( Переоценка.date ) + ";" + DTOC( Переоценка.endaction ) + ";;;СПЕЦЦЕНЫ;СПЕЦЦЕНЫ;1;0;1;1;1" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем список товаров и разрезов/##CHR(13)##//##CHR(10)##/ Строка = "";/##CHR(13)##//##CHR(10)##/ Строка2 = "";/##CHR(13)##//##CHR(10)##/ СписокХар = "";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAspectList = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /////////////////////////////////////////////////////////////////////////////////##CHR(13)##//##CHR(10)##/ // Для разреза товара необходимо сформировать список используемых разрезов/##CHR(13)##//##CHR(10)##/ // Формируем список разрезов через запятую/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.f_subres AND !ПУСТО( СписокТоваров.code ) AND f_razr AND ( aspecttype == 2 OR aspecttype == 0 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоваров.nngroup + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ mAspectValue= ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоваров.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ mAspectList = mAspectList + IIF( !EMPTY( mAspectList ), "#", "" ) + mAspectValue;/##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + mAspectList;/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ALLTRIM( СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" );/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ALLTRIM( ЕСЛИ( СписокТоваров.f_subres, СписокТоваров.subcode, СписокТоваров.code ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка2 += ЕСЛИ( !ПУСТО( Строка2 ), CHR( 149 ), "" ) + STR( СписокТоваров.cena, 16, 2 );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КОДАКЦИИ + ";" + КОДАКЦИИ +";СПЕЦЦЕНЫ;СПЕЦЦЕНЫ;8;" + Строка + ";" + СписокХар + ";" + Строка2 );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "Переоценка" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "Переоценка" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬКЛАССИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //Выгрузка групп ресурсов как классификаторов товаров в ККМ./##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Сначала группы ресурсов/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name /##CHR(13)##//##CHR(10)##/ FROM sprres_g /##CHR(13)##//##CHR(10)##/ WHERE folder=0 and notavail=0 and f_nokkm=0", "СписокГруппРесурсов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокГруппРесурсов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокГруппРесурсов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( code ))) + ";;0;" + STDE( name ) + ";" + STDE( name );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокГруппРесурсов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь связи групп ресурсов и товаров/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERLINKS" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT t.code, t.nngroup, t.f_subres/##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t/##CHR(13)##//##CHR(10)##/ WHERE t.f_subres = 0 AND t.nngroup <> '''' AND t.cena >" + IIF( !ТОВАРЫБЕЗЦЕНЫ, "", "=" ) + " 0", "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокКлассификаторов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( nngroup ))) + ";1;" + ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬПРАЙСЛИСТЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, clev, name FROM sprccnames WHERE clev <> (SELECT clev FROM sprskl WHERE code = ( SELECT sklad FROM sprequipment where code = ''" + КОДОБОРУДОВАНИЯ + "'' ) )", "СписокПрайсЛистов");/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокПрайсЛистов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDPRICELISTS" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокПрайсЛистов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = STR(VAL(СписокПрайсЛистов.code)) + ";" + LEFT(СписокПрайсЛистов.name, 100) + ";" + LEFT(СписокПрайсЛистов.name, 100);/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ ПЕРЕЙТИВНАЧАЛО("СписокПрайсЛистов");/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА("СписокПрайсЛистов") )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, dbo.fn_calcclev_cena(nn, GETDATE(),''" + СписокПрайсЛистов.clev + "'', ''001'') AS cena FROM "+ ТОВАРЫ, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (!СОХРАНЯТЬТОВАРЫ)/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEPRICELISTPRICES" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка = STR(VAL(СписокПрайсЛистов.code)) + ";" + СписокТоваров.code + ";;;;;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDPRICELISTPRICES" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ПЕРЕЙТИВНАЧАЛО( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( !ТОВАРЫБЕЗЦЕНЫ AND VAL( СписокТоваров.cena ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка = STR(VAL(СписокПрайсЛистов.code)) + ";" + СписокТоваров.code + ";;;;;;" + СписокТоваров.cena;/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ SKIP( 1, "СписокПрайсЛистов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФАЙЛЗАКРЫТЬ( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',216.00000000,'//Начало выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления различных объектов, если установлены галочки/##CHR(13)##//##CHR(10)##/// Дисконтные карты/##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИКАРТ ) ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLCCARDDISCS" );/##CHR(13)##//##CHR(10)##/// Клиенты, владельцы дисконтных карт/##CHR(13)##//##CHR(10)##///IF ( ПРИЗНАКОЧИСТКИКЛИЕНТОВ ) ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLCLIENTDISCS" );/##CHR(13)##//##CHR(10)##/// Так как все загружается через маркетинговые акции, то предварительно их удаляем/##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИСХЕМ OR ПРИЗНАКОЧИСТКИСТАВОК OR ПРИЗНАКОЧИСТКИОБЪЕКТОВ ) //OR ТИПВЫГРУЗКИ == "СКИДКИ" ) /##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',222.00000000,'//Выгрузка дисконтных карт в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы со списком карт/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + КАРТЫ, "СписокКарт" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCCARDDISCS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКарт" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ mParent = IIF( EMPTY( card_type ), "1", ALLTRIM( card_type ) );/##CHR(13)##//##CHR(10)##/ mState = IIF( block, "0", "1" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mCard_type = ALLTRIM( card_type );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Обороты по карте и количество посещений расчитываются системой перед началом выгрузки/##CHR(13)##//##CHR(10)##/ mCardSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/ mCardCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( mValue, "C" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = mValue;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mCardn = STRTRAN( cardn, ";", CHR( 164 ) ); /##CHR(13)##//##CHR(10)##/ mStart_date = IIF( EMPTY( str_date ), "", DTOC( str_date ) );/##CHR(13)##//##CHR(10)##/ mEnd_date = IIF( EMPTY( end_date ), "", DTOC( end_date ) );/##CHR(13)##//##CHR(10)##/ // Формируем строку для записи в файл/##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + mParent + ";" + mCardn + ";" + mStart_date + ";" + mEnd_date + ";" +/##CHR(13)##//##CHR(10)##/ mState + ";" + mVtype + ";" + mDsc_value + ";" + mType_ + ";;;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если есть объекты скидок с картами, то формируем классификаторы карт/##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц ОБЪЕКТЫ и СКИДКИ И ТОВАРОВ/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT DISTINCT sprschem.code, temp.discount, CASE WHEN temp.card <> '''' THEN sprschem.code ELSE '''' END AS classcode, sprschem.name/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON temp.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code", "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКлассификаторов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокКлассификаторов.classcode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокКлассификаторов.code ) ) ) + ";;0;" + STDE( СписокКлассификаторов.name ) + ";" + STDE( СписокКлассификаторов.name ) );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT spr.cardn/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmcard spr ON spr.code = temp.card/##CHR(13)##//##CHR(10)##/ WHERE temp.schem = ''" + СписокКлассификаторов.code + "''", "СписокКартСхемы" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDCLASSIFIERLINKS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокКартСхемы" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокКартСхемы.cardn ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокКлассификаторов.code ) ) )+ ";3;" + STDE( СписокКартСхемы.cardn ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокКартСхемы" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКартСхемы" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ( "СписокКлассификаторов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',223.00000000,'//Выгрузка папок клиентов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками клиентов/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + ПАПКИКЛИЕНТОВ, "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ПапкиКлиентов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( ABS( ic ) + 1000000000 ) );/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1) ), "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если надо вычислять занчение скидки в момент выгрузки, то вычисляем его/##CHR(13)##//##CHR(10)##/ IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";1;;;;;;;;;;;;;;;;" + mDsc_value + ";" + mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',224.00000000,'//Выгрузка клиентов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с клиентами/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + КЛИЕНТЫ, "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКлиентов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( EMPTY( parent ),0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/ mSex = ALLTRIM( STR( sex ) );/##CHR(13)##//##CHR(10)##/ mZdate = "";/##CHR(13)##//##CHR(10)##/ mIndex = "";/##CHR(13)##//##CHR(10)##/ mCity = "";/##CHR(13)##//##CHR(10)##/ mWeb = "";/##CHR(13)##//##CHR(10)##/ mInn = "";/##CHR(13)##//##CHR(10)##/ mDoc = "";/##CHR(13)##//##CHR(10)##/ mOkpo = "";/##CHR(13)##//##CHR(10)##/ mOkpd = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Обороты и счетчики посещений уже расчитаны в системе до начала выгрузки/##CHR(13)##//##CHR(10)##/ mSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/ mCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mNote = LEFT( ALLTRIM( STRTRAN( note, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mTelephon = LEFT( ALLTRIM( STRTRAN( telefon, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mAddress = LEFT( ALLTRIM( STRTRAN( address, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mEmail = LEFT( ALLTRIM( STRTRAN( email, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mBirthdate = IIF( EMPTY( birthdate ), "", DTOC( birthdate ) );/##CHR(13)##//##CHR(10)##/ mRdate = DTOC( DATE( ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";0;" + mNote + ";" +/##CHR(13)##//##CHR(10)##/ mSex + ";" + mZdate + ";" + mBirthdate + ";" + mRdate + ";" + mIndex + ";" + /##CHR(13)##//##CHR(10)##/ mCity + ";" + mAddress + ";" + mEmail + ";" + mWeb + ";" + mTelephon + ";" +/##CHR(13)##//##CHR(10)##/ mInn + ";" + mDoc + ";" + mOkpo + ";" + mOkpd + ";" + mDsc_value + ";" + /##CHR(13)##//##CHR(10)##/ mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',225.00000000,'//Выгрузка дисконтных карт клиентов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц КЛИЕНТЫ и КАРТЫ/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT cln.code AS clientcode, crd.code AS cardcode, crd.card_type/##CHR(13)##//##CHR(10)##/ FROM " + КЛИЕНТЫ + " cln/##CHR(13)##//##CHR(10)##/ INNER JOIN " + КАРТЫ + " crd ON crd.client = cln.code", "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт клиентов/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTCCARDS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокКартКлиентов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ mClientCode = ALLTRIM( STR( VAL( clientcode ) ) );/##CHR(13)##//##CHR(10)##/ mCardCode = ALLTRIM( STR( VAL( cardcode ) ) );/##CHR(13)##//##CHR(10)##/ mParent = IIF( EMPTY( card_type ), "1", ALLTRIM( card_type ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/ Строка = mClientCode + ";" + mParent + ";" + mCardCode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',226.00000000,'//Выгрузка объектов скидок в ККМ./##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/СООБЩЕНИЕ("ОБЪЕКТЫ " + ОБЪЕКТЫ);/##CHR(13)##//##CHR(10)##/СООБЩЕНИЕ("ТОВАРЫВОБЪЕКТАХ " + ТОВАРЫВОБЪЕКТАХ);/##CHR(13)##//##CHR(10)##/*//##CHR(13)##//##CHR(10)##/// Правило объединения - максимальная скидка/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$CHANGEMARKETINGACTIONSUNION" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "2;2" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///Выгрузка объектов скидок в ККМ. Выгружаются Акции и мероприятия/##CHR(13)##//##CHR(10)##/НомерПоПорядку = 1;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Сначала выгружаем ручные скидки/##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT sprschem.code, sprschem.start_date, sprschem.end_date, sprschem.name, dsc.ctext, dsc.code AS discount,/##CHR(13)##//##CHR(10)##/ dsc.type_, dsc.vtype, dsc.f_evaluate, dsc.value, dsc.value_min, dsc.value_max/##CHR(13)##//##CHR(10)##/ FROM sprmdiscount_schem sprschem /##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code and dsc.f_auto = 0", "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкцийРучныхСкидок" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) ) + ";" + DTOC( СписокАкцийРучныхСкидок.start_date ) + ";" + /##CHR(13)##//##CHR(10)##/ DTOC( СписокАкцийРучныхСкидок.end_date ) + ";;;" + STDE( СписокАкцийРучныхСкидок.name ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( СписокАкцийРучныхСкидок.ctext ) + ";1;0;;1;2" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Теперь формируем события по акциям/##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО( "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкцийРучныхСкидок" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ КодАкции = ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) );/##CHR(13)##//##CHR(10)##/ КодСкидки = ALLTRIM( СписокАкцийРучныхСкидок.discount );/##CHR(13)##//##CHR(10)##/ КодМероприятия = КодАкции + RIGHT(КодСкидки, 8 - LEN(КодАкции) ) ;/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( СписокАкцийРучныхСкидок.value_min ) AND ПУСТО( СписокАкцийРучныхСкидок.value_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокАкцийРучныхСкидок.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокАкцийРучныхСкидок.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокАкцийРучныхСкидок.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";" + ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( СписокАкцийРучныхСкидок.name ) + ";" + STDE( СписокАкцийРучныхСкидок.ctext ) + ";5;" + /##CHR(13)##//##CHR(10)##/ STR( СписокАкцийРучныхСкидок.type_ - 1 ) + ";" + ЕСЛИ( СписокАкцийРучныхСкидок.vtype == 1, "1", "0" ) + ";0;" + Процент );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Процент_min = STR( VAL( СписокАкцийРучныхСкидок.value_min ), 10, 2 );/##CHR(13)##//##CHR(10)##/ Процент_max = STR( VAL( СписокАкцийРучныхСкидок.value_max ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";" + ALLTRIM( STR( VAL( СписокАкцийРучныхСкидок.code ) + 5 ) ) + ";" + /##CHR(13)##//##CHR(10)##/ STDE( СписокАкцийРучныхСкидок.name ) + ";" + STDE( СписокАкцийРучныхСкидок.ctext ) + ";5;" + /##CHR(13)##//##CHR(10)##/ STR( СписокАкцийРучныхСкидок.type_ - 1 ) + ";" + ЕСЛИ( СписокАкцийРучныхСкидок.vtype == 1, "1", "0" ) + ";1;0;" + /##CHR(13)##//##CHR(10)##/ Процент_min + ";" + Процент_max );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ НомерПоПорядку++;/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ( "СписокАкцийРучныхСкидок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц ОБЪЕКТЫ и СКИДКИ И ТОВАРОВ/##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT sprschem.code, sprschem.start_date, sprschem.end_date, sprschem.name, dsc.ctext, dsc.code AS discount, dsc.vtype/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON temp.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code", "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) ) + ";" + DTOC( СписокАкций.start_date ) + ";" + DTOC(СписокАкций.end_date ) +/##CHR(13)##//##CHR(10)##/ ";;;" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";1;0;;1;2" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО( "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ КодАкции = ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) );/##CHR(13)##//##CHR(10)##/ КодСкидки = ALLTRIM( СписокАкций.discount );/##CHR(13)##//##CHR(10)##/ КодМероприятия = КодАкции + RIGHT(КодСкидки, 8 - LEN(КодАкции) ) ;/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT obj.f_subres, obj.ware_folder, obj.warefolder_ic, obj.maincode, /##CHR(13)##//##CHR(10)##/ sprschem.discount AS discount, obj.aspect, ware.group_, obj.value, obj.f_evaluate, obj.subcode/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN " + ТОВАРЫВОБЪЕКТАХ + " ware ON obj.nn = ware.code/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON obj.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "'' AND ( obj.nn <> '''' OR obj.ware_folder = 1 )", "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT obj.card, obj.value, obj.f_evaluate/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "'' AND obj.card <> ''''", "СписокКарточныхОбъектов" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT DISTINCT obj.client, obj.client_folder, obj.clientfolder_ic, obj.value, obj.f_evaluate/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "'' AND ( obj.client <> '''' OR client_folder = 1 )", "СписокКлиентскихОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокТоварныхОбъектов" ) == 0 AND КОЛИЧЕСТВОСТРОК( "СписокКарточныхОбъектов" ) == 0 AND КОЛИЧЕСТВОСТРОК( "СписокКлиентскихОбъектов" ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ // Если нет "товарных" объектов в выбранной схеме, то пропускаем такую схему/##CHR(13)##//##CHR(10)##/ Строка = "";/##CHR(13)##//##CHR(10)##/ Строка2 = "";/##CHR(13)##//##CHR(10)##/ УсловиеКарт = "";/##CHR(13)##//##CHR(10)##/ УсловиеКлиентов = "";/##CHR(13)##//##CHR(10)##/ СписокХар = "";/##CHR(13)##//##CHR(10)##/ Процент = "";/##CHR(13)##//##CHR(10)##/ СписокТиповСкидок = "";/##CHR(13)##//##CHR(10)##/ ТипЗначенияСкидки = СписокАкций.vtype;/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокТоварныхОбъектов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокТоварныхОбъектов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоварныхОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокТоварныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокТоварныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ IF ( СписокТоварныхОбъектов.ware_folder OR !ПУСТО( СписокТоварныхОбъектов.maincode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAspectList = "";/##CHR(13)##//##CHR(10)##/ /////////////////////////////////////////////////////////////////////////////////##CHR(13)##//##CHR(10)##/ // Для разреза товара необходимо сформировать список используемых разрезов/##CHR(13)##//##CHR(10)##/ // Формируем список разрезов через запятую/##CHR(13)##//##CHR(10)##/ IF ( !ware_folder AND f_subres AND f_razr AND ( aspecttype == 2 OR aspecttype == 0 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоварныхОбъектов.group_ + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ mAspectValue= ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоварныхОбъектов.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ mAspectList = mAspectList + IIF( !EMPTY( mAspectList ), "#", "" ) + mAspectValue;/##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ КодГлавной = ЗАПРОС( "SELECT maincode FROM sprres WHERE code= ''" + СписокТоварныхОбъектов.subcode + "''" );/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + mAspectList;/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ALLTRIM( КодГлавной );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокХар += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" );/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + ЕСЛИ( ware_folder, ALLTRIM( STR( 1000000000 + warefolder_ic ) ), ALLTRIM( maincode ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Строка2 += ЕСЛИ( !ПУСТО( Строка2 ), CHR( 149 ), "" ) + Процент;/##CHR(13)##//##CHR(10)##/ СписокТиповСкидок += ЕСЛИ( !ПУСТО( СписокТиповСкидок ), CHR( 149 ), "" ) + ЕСЛИ( !ПУСТО( Строка ), ЕСЛИ( ТипЗначенияСкидки == 1 , "0", "1" ), ЕСЛИ( ТипЗначенияСкидки == 1, "1", "0" ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокТоварныхОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокКарточныхОбъектов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ УсловиеКарт = ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если процент скидки еще не был вычислен, то вычисляем его здесь/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( Процент ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокКарточныхОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокКарточныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокКарточныхОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "СписокКлиентскихОбъектов" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если процент скидки еще не был вычислен, то вычисляем его здесь/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( Процент ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокКлиентскихОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокКлиентскихОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокКлиентскихОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокКлиентскихОбъектов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ УсловиеКлиентов += ЕСЛИ( !ПУСТО( УсловиеКлиентов ), CHR( 149 ), "" ) + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокКлиентскихОбъектов.client_folder, ALLTRIM( STR( 1000000000 + СписокКлиентскихОбъектов.clientfolder_ic ) ), /##CHR(13)##//##CHR(10)##/ ALLTRIM( СписокКлиентскихОбъектов.client ) );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокКлиентскихОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКлиентскихОбъектов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокКарточныхОбъектов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВидСкидки = ЕСЛИ( !ПУСТО( Строка ), ЕСЛИ( ТипЗначенияСкидки == 1 , "0", "1" ), ЕСЛИ( ТипЗначенияСкидки == 1, "1", "0" ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";" + ALLTRIM( STR( VAL( СписокАкций.code ) + 5 ) ) + ";" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( !ПУСТО( Строка ), "2", "1" ) + ";" + ЕСЛИ( ПУСТО( Строка ), ВидСкидки + ";" + Процент, /##CHR(13)##//##CHR(10)##/ Строка + ";" + СписокХар + ";" + Строка2 + ";;;" + СписокТиповСкидок + ";" + СписокТиповСкидок ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь записываем условия/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGCONDITIONS" );/##CHR(13)##//##CHR(10)##/ // Если были объекты с картами. то добавляем условие на классификатор карт/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( УсловиеКарт ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";15;" + ALLTRIM( STR( VAL( СписокАкций.code ) ) ) );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( УсловиеКлиентов ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, КодМероприятия + ";18;" + УсловиеКлиентов );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT * FROM specmdiscount WHERE code = ''" + СписокАкций.discount + "''", "Условие", 1 );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "Условие" );/##CHR(13)##//##CHR(10)##/ СписокУсловий = "";/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( csumma_min ) OR !EMPTY( csumma_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";1;>=;" + ALLTRIM( STR( csumma_min, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";1;<=;" + ALLTRIM( STR( csumma_max, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( summa_min ) OR !EMPTY( summa_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";22;>=;" + ALLTRIM( STR( summa_min, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";22;<=;" + ALLTRIM( STR( summa_max, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";2;>=;" + ALLTRIM( STR( kolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";2;<=;" + ALLTRIM( STR( kolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";23;>=;" + ALLTRIM( STR( ckolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";23;<=;" + ALLTRIM( STR( ckolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//* IF ( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";5;>=;" + ALLTRIM( prefix_min ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";5;<=;" + ALLTRIM( prefix_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }*//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( time_min ) OR !EMPTY( time_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";6;" + ALLTRIM( time_min ) + ";" + ALLTRIM( time_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( wday_min ) OR !EMPTY( wday_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";7;";/##CHR(13)##//##CHR(10)##/ СписокДней = "";/##CHR(13)##//##CHR(10)##/ day = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( day <= 7 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( wday_min <= wday_max )/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min AND day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min OR day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ day++;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ СписокУсловий += СписокДней + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 2 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";13;0;1;" + STR( birthday_min ) + ";" + STR( birthday_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокУсловий ) )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬ( ДескрипторФайла, СписокУсловий );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/ НомерПоПорядку++;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',227.00000000,'//Завершение выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',228.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##/ФайлФлаг = ФайлСоздать( path_flag_out );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ФайлФлаг, "");/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ФайлФлаг );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Ждем 20 секунд появления LoadResult.txt/##CHR(13)##//##CHR(10)##///Время = TickCount( );/##CHR(13)##//##CHR(10)##///WHILE ( !ФАЙЛ( ФайлОтветаФронтол ) && TickCount( ) - Время < 20000 ) Ожидание( 1000 );/##CHR(13)##//##CHR(10)##///IF ( ФАЙЛ( ФайлОтветаФронтол ) )/##CHR(13)##//##CHR(10)##/// ВЫПОЛНИТЬ( "notepad", ФайлОтветаФронтол );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',229.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN path_flag_out;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',230.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения количества созданных файлов с данными../##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое, равное количеству созданных файлов./##CHR(13)##//##CHR(10)##/RETURN 1;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',231.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##/RETURN path_out;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',232.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',235.00000000,'// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( ФАЙЛ( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLUSERS" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник пользователей (из справочника работников)/##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ( "SELECT code, name, chequetext, profile, password, ex_code, /##CHR(13)##//##CHR(10)##/ ( SELECT MAX( inn ) FROM sprempl WHERE maincode = temp.code ) AS inn /##CHR(13)##//##CHR(10)##/ FROM " + Пользователи + " temp", "СправочникПользователей" ); /##CHR(13)##//##CHR(10)##/ВЫБРАТЬКОНТЕКСТ( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##/ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDUSERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СправочникПользователей" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( chequetext ) + ";" + STDE( profile ) + ";" + STDE( password ) + ";" + STDE( ex_code ) + ";" + STDE( inn ) );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ВЫГРУЖАТЬСОТРУДНИКОВ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем справочник сотрудников (из справочника работников)/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT temp.code, temp.name, temp.chequetext, temp.profile, temp.password, temp.ex_code, /##CHR(13)##//##CHR(10)##/ dbo.fn_getchar_ex ( ''SPR'',''S06'', ''ФронтолСправочникСотрудниковПользователь'', sprempl.code, DEFAULT, DEFAULT, DEFAULT) AS empl/##CHR(13)##//##CHR(10)##/ FROM " + Пользователи + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprempl sprempl ON temp.code = sprempl.maincode", "СправочникСотрудников"); /##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDEMPLOYEES");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СправочникСотрудников" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( empl ) == 1 )/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + code + ";" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";;" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',240.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !РучнойОбмен )/##CHR(13)##//##CHR(10)##/{ /##CHR(13)##//##CHR(10)##/ //------- Создаем файл флага/##CHR(13)##//##CHR(10)##/ fileName = ALLTRIM( ИмяФайлаФлага );/##CHR(13)##//##CHR(10)##/ fileHandle = ФайлСоздать( fileName );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Если не получилось создать файл - идем дальше не останавливаясь на данном ККМ/##CHR(13)##//##CHR(10)##/ IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось создать файл флага ''" + fileName + "'' для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- Записываем в него команды/##CHR(13)##//##CHR(10)##/ commands = "";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 1 )/##CHR(13)##//##CHR(10)##/ commands = "$$$NEWTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 2 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYDATETIMERANGE" + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ commands = commands + TTOC( НАЧАЛОПЕРИОДА ) + ";" + TTOC( КОНЕЦПЕРИОДА ) + ";";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 3 )/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYSESSIONSRANGE" + CHR(13) + CHR(10) + ПЕРВАЯСМЕНА + ";" + ПОСЛЕДНЯЯСМЕНА;/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 4 )/##CHR(13)##//##CHR(10)##/ commands = "$$$ALLTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 5 )/##CHR(13)##//##CHR(10)##/ commands = "$$$LASTSESSIONTRANSACTIONS";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Для ККМ ШТРИХ - команды не нужны/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( fileHandle, commands );/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',241.00000000,'/##CHR(13)##//##CHR(10)##///Проверка наличия данных для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае наличия данных для загрузки и ЛОЖЬ, в случае их отсутствия./##CHR(13)##//##CHR(10)##/// Проверяем наличие самих файлов и возможность чтения данных из них /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ЕстьФайлы = false;/##CHR(13)##//##CHR(10)##/ИмяФайла = ФайлНайти( СжатьПробелы( ИмяФайла ) );/##CHR(13)##//##CHR(10)##/ФайлЗакончитьПоиск( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Пытаемся открыть файл. Файл может существовать, но быть занят, /##CHR(13)##//##CHR(10)##/// например, он в процессе формирования, поэтому его не удасться загрузить/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( ИмяФайла ) AND ( РучнойОбмен OR !ФАЙЛ( ИмяФайлаФлага ) OR !EMPTY( exchangeservice_in ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла >= 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ЕстьФайлы = true;/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( ИмяФайла ) AND РучнойОбмен )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Для кассы """ + ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) + """ нет файлов для загрузки" );/##CHR(13)##//##CHR(10)##/ RETURN true;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕстьФайлы;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',242.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается в случае файлового обмена для определения количества файлов для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое равное количеству найденых файлов для загрузки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Необходимо посчитать сколько есть файлов для загрузки /##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КоличествоФайлов = ФайлСписок( СжатьПробелы( ИмяФайла ), "ИменаФайловДляЗагрузки");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN КоличествоФайлов;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',243.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ИменаФайловДляЗагрузки[ НомерФайла - 1 ];',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',244.00000000,'//Проверка возможности загрузки файла./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, проверку которого необходимо произвести./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения возможности загрузки указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной проверки. Если обработка возвращает ЛОЖЬ, то загрузка файла с данными не производится./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Возвращаем ИСТИНУ, если не стоит признак f_checkdone, иначе открываем файл и проверяем первый символ/##CHR(13)##//##CHR(10)##/checkResult = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьПризнакЗагрузки = ЕСЛИ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ, f_checkdone, ЗАПРОС("SELECT f_checkdone_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПроверятьПризнакЗагрузки )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Файл = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ checkResult = ФайлПрочитать( Файл, "S" ) == "#";/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( Файл );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN checkResult;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',246.00000000,'PUBLIC ИСТОЧНИКДАТЫ, ДЕЛИТЬПОККМ, ДЕЛИТЬПОКС, СКЛАДЫИЗГРУПП, ФИРМЫИЗГРУПП, СПИСОКФР, ККМ_КОДОБОРУДОВАНИЯ,/##CHR(13)##//##CHR(10)##/КОДФРОНТ2, КОДФРОНТ3, КОДФРОНТ4, КОДФРОНТ5, КОДФРОНТ6;/##CHR(13)##//##CHR(10)##///Загрузка данных./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, загрузку которого необходимо произвести. Данный параметр передается только при файловом обмене./##CHR(13)##//##CHR(10)##///Обработка вызывается для загрузки данных./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной загрузки. иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ЗАГРУЖАТЬЧЕКИ = ПЕРЕМЕННАЯ("_ФРОНТОЛ_ЗАГРУЖАТЬЧЕКИ", false);/##CHR(13)##//##CHR(10)##/IF ( ЗАГРУЖАТЬЧЕКИ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ККМ_КОДОБОРУДОВАНИЯ = КОДОБОРУДОВАНИЯ;/##CHR(13)##//##CHR(10)##/ IF ( !EQUIPMENT.ККМ_ЗагрузитьТранзакцииВЧеки( ККМ_КОДОБОРУДОВАНИЯ, ИмяФайла, sklad ) )/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ("Произошла ошибка при загрузке чеков из Фронтол", "Загрузка чеков из Фронтол");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //загружаем ДКС из чеков/##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТЫИЗЧЕКОВ", false ) AND !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ RETURN Сервис.РМКСоздатьДокументы( "", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТПРИАВТОМАТИЧЕСКОЙЗАГРУЗКЕ", true ) AND АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Индикатор( );/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ RETURN true; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА = ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ТИПДОКУМЕНТАТОЛЬКОПОФОРМЕОБМЕНА", false );/##CHR(13)##//##CHR(10)##/ИМЯОБОРУДОВАНИЯ = ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( "Обработка ККМ """ + ИМЯОБОРУДОВАНИЯ + """. Файл " + ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/fileHandle = ФайлОткрыть( ИмяФайла, 0, 1 );/##CHR(13)##//##CHR(10)##/kkmsklad = sklad;/##CHR(13)##//##CHR(10)##/sklad_d = "";/##CHR(13)##//##CHR(10)##/firm = "";/##CHR(13)##//##CHR(10)##/processCount = 0;/##CHR(13)##//##CHR(10)##/итого = 0.00;/##CHR(13)##//##CHR(10)##/docid = 0;/##CHR(13)##//##CHR(10)##/_ERRORDESCRIPTION = "";/##CHR(13)##//##CHR(10)##/КодКассы = КодОборудования;/##CHR(13)##//##CHR(10)##/РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ_ФРОНТОЛ52" ) == "L" )/##CHR(13)##//##CHR(10)##/ РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ = _РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ_ФРОНТОЛ52;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##///------ Не удалось открыть файл - выходим/##CHR(13)##//##CHR(10)##/IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось открыть файл ''" + ИмяФайла + "'' загрузки для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///записываем символ @ в первую строку - признак того, что файл загружен/##CHR(13)##//##CHR(10)##/ЕстьПризнакЧтения = ФайлПрочитать( fileHandle, "S" ) == "#";/##CHR(13)##//##CHR(10)##/IF ( ЕстьПризнакЧтения )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФАЙЛУСТАНОВИТЬУКАЗАТЕЛЬ( fileHandle, 0, 0 );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( fileHandle, "@" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок = ФайлКоличествоСтрок( fileHandle );/##CHR(13)##//##CHR(10)##/Индикатор( "Загрузка данных", КоличествоСтрок );/##CHR(13)##//##CHR(10)##/КоличествоСтрок = 0;/##CHR(13)##//##CHR(10)##/tranzDate = ""; // Дата транзакции/##CHR(13)##//##CHR(10)##/tranzTime = ""; // Время транзакции/##CHR(13)##//##CHR(10)##/foundTranz = false; // Признак того, что нашли транзакции/##CHR(13)##//##CHR(10)##/client = ""; // Код клиента из чека/##CHR(13)##//##CHR(10)##/maxTranzCount = 0; // Будем хранить максимальный номер транзакции/##CHR(13)##//##CHR(10)##/identif = 0;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьКОДФР = !ПУСТО( ЗАПРОС( "SELECT ex_code + fr_list FROM sprequipment WHERE code = ''" + КодОборудования + "''" ) );/##CHR(13)##//##CHR(10)##/ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП = ЗАПРОС( "SELECT f_sklfromwaregrp FROM sprequipment WHERE code = ''" + КодОборудования + "''" );/##CHR(13)##//##CHR(10)##/БРАТЬСКЛАДЫИЗГРУПП = СКЛАДЫИЗГРУПП OR ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем контекст со списком ФР и юридическими лицами, которые привязаны к ФР/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT fr_code, firm FROM " + СПИСОКФР, "СписокФР" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/БылиТранзакцииПоФРВыбранномуВТО = FALSE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///установим указатель на начало файла/##CHR(13)##//##CHR(10)##/ФАЙЛУСТАНОВИТЬУКАЗАТЕЛЬ( fileHandle, 0, 0 ); /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !ФайлКонецФайла( fileHandle ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, "Обработано строк" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ string = ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------ Первые три строки - заголовок файла, он нам не интересен. В этих строках нет разделителей, поэтому будем пропускать по отсутствию точки с запятой/##CHR(13)##//##CHR(10)##/ IF ( ATC( string, ";", 1 ) == 0 OR ALLTRIM( string ) == "@" OR ALLTRIM( string ) == "#" )/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------ Если строка пустая - пропускаем ее/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( string ) ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Для соответствия номеров полей возвращаемым номерам слов - добавляем разделитель /##CHR(13)##//##CHR(10)##/ string = ";" + string;/##CHR(13)##//##CHR(10)##/ tranzCount = GetWord( string, ";", ";", 1 );/##CHR(13)##//##CHR(10)##/ tranzDate = GetWord( string, ";", ";", 2 );/##CHR(13)##//##CHR(10)##/ tranzTime = GetWord( string, ";", ";", 3 );/##CHR(13)##//##CHR(10)##/ tranzType = GetWord( string, ";", ";", 4 );/##CHR(13)##//##CHR(10)##/ POSNumber = VAL( GetWord( string, ";", ";", 5 ) );/##CHR(13)##//##CHR(10)##/ chequeNumber = STR( VAL( GetWord( string, ";", ";", 6 ) ) );/##CHR(13)##//##CHR(10)##/ Seller = STR( VAL( GetWord( string, ";", ";", 7 ) ) );/##CHR(13)##//##CHR(10)##/ wareCode = GetWord( string, ";", ";", 8 );/##CHR(13)##//##CHR(10)##/ AspectsList = GetWord( string, ";", ";", 9 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ AspectValue1 = GetWord( "," + AspectsList, ",", 1 );/##CHR(13)##//##CHR(10)##/ AspectValue2 = GetWord( "," + AspectsList, ",", 2 );/##CHR(13)##//##CHR(10)##/ AspectValue3 = GetWord( "," + AspectsList, ",", 3 );/##CHR(13)##//##CHR(10)##/ AspectValue4 = GetWord( "," + AspectsList, ",", 4 );/##CHR(13)##//##CHR(10)##/ AspectValue5 = GetWord( "," + AspectsList, ",", 5 );/##CHR(13)##//##CHR(10)##/ Price = STRTRAN( GetWord( string, ";", 10 ), ",","." );/##CHR(13)##//##CHR(10)##/ Quantity = STRTRAN( GetWord( string, ";", 11 ), ",","." );/##CHR(13)##//##CHR(10)##/ chequeType = STR( VAL( GetWord( string, ";", 13 ) ) );/##CHR(13)##//##CHR(10)##/ ecrSession = GetWord( string, ";", 14 );/##CHR(13)##//##CHR(10)##/ PriceWD = STRTRAN( GetWord( string, ";", 15 ), ",","." );/##CHR(13)##//##CHR(10)##/ SummWD = STRTRAN( GetWord( string, ";", 16 ), ",","." );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ecrNumber = ALLTRIM( STR( VAL( GetWord( string, ";", 17 ) ) ) );/##CHR(13)##//##CHR(10)##/ wareMark = STRTRAN( GetWord( string, ";", 18 ), CHR(164), ";" );/##CHR(13)##//##CHR(10)##/ sgtin = ALLTRIM( STRTRAN( GetWord( string, ";", 33 ), CHR(164), ";" ) );/##CHR(13)##//##CHR(10)##/ exmark = GetWord( string, ";", 34 );/##CHR(13)##//##CHR(10)##/ barcodereg = GetWord( string, ";", 19 );/##CHR(13)##//##CHR(10)##/ barcode = ЕСЛИ( !ПУСТО( exmark ), exmark, barcodereg );/##CHR(13)##//##CHR(10)##/ Summ = STRTRAN( GetWord( string, ";", 20 ), ",","." );/##CHR(13)##//##CHR(10)##/ currency = GetWord( string, ";", 21 );/##CHR(13)##//##CHR(10)##/ education = ЕСЛИ( !ПУСТО( VAL( GetWord( string, ";", 22 ) ) ), 1, 0 );/##CHR(13)##//##CHR(10)##/ dockIndCode = GetWord( string, ";", 23 );/##CHR(13)##//##CHR(10)##/ commentCode = GetWord( string, ";", 24 );/##CHR(13)##//##CHR(10)##/ universalNDOK = GetWord( string, ";", 26 );/##CHR(13)##//##CHR(10)##/ karta = "";/##CHR(13)##//##CHR(10)##/ documentClient = "";/##CHR(13)##//##CHR(10)##/ manager = GetWord( string, ";", 28 );/##CHR(13)##//##CHR(10)##/ warecode_org = warecode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( INLIST( VAL( tranzType ), 5, 9, 10, 15, 6, 16, 7, 17, 8, 18, 75, 85, 76, 86, 77, /##CHR(13)##//##CHR(10)##/ 87, 78, 88, 35, 36, 37, 38, 40, 41, 42, 43, 44, 45, 55, 56, 57, 49, 45, 82, 83, 84, 86, 87, 32, 33, 34, 80, 27 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Заменяем служебный символ на точку с запятой/##CHR(13)##//##CHR(10)##/ karta = STRTRAN( warecode, CHR( 164 ), ";" );/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//* IF ( СЖАТЬПРОБЕЛЫ( СТРОКА( ЧИСЛО( warecode ) ) ) <> СЖАТЬПРОБЕЛЫ( warecode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }*//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( VAL( AspectValue1 ) > 100000000 )/##CHR(13)##//##CHR(10)##/ AspectValue1= "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Если операция закрытие чека, или другая, подразумевающая наличие клиента, то /##CHR(13)##//##CHR(10)##/ //------- если карта не была указана, пытаемся ее определить по клиенту/##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( VAL( tranzType ), 55, 42, 56, 45, 49 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ documentClient = priceWD;/##CHR(13)##//##CHR(10)##/ priceWD = "";/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) AND VAL( documentClient ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE code = (SELECT card FROM sprmclient WHERE dbo.fn_chartoint( code ) = " + STR( VAL( documentClient ) ) + ")" );/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) )/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE client = " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( РАБОЧИЕМЕСТАКАКОТДЕЛЬНЫЕККМ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ КодКассы = ЗАПРОС( "SELECT code FROM sprequipment WHERE ex_code = ''" + POSNumber + "''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КодКассы ) )/##CHR(13)##//##CHR(10)##/ kkmsklad = ЗАПРОС( "SELECT sklad FROM sprequipment WHERE code = ''" + КодКассы + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( VAL( wareCode ) > 90000000 )/##CHR(13)##//##CHR(10)##/ wareCode = STR( VAL( warecode ) - 90000000 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Если транзакцию с полученным номером уже обрабатывали, то пропускаем строку/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT CASE WHEN EXISTS(SELECT * FROM "+ ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE id = " + STR( VAL( tranzCount ) ) + " AND posnumber = " + STR( posNumber ) +") /##CHR(13)##//##CHR(10)##/ THEN 1 ELSE 0 END " ) == 1 ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Определяем, входит ли текущий ФР в список обрабатываемых ФР/##CHR(13)##//##CHR(10)##/ IF ( ПроверятьКОДФР AND !Найти( "СписокФР", "СписокФР.fr_code == ''" + UPPER( ALLTRIM( ecrNumber ) ) + "''" ) ) CONTINUE;/##CHR(13)##//##CHR(10)##/ БылиТранзакцииПоФРВыбранномуВТО = TRUE;/##CHR(13)##//##CHR(10)##/ //-------- Запоминаем /##CHR(13)##//##CHR(10)##/ firm = СписокФР.firm;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ tranzCount = VAL( tranzCount );/##CHR(13)##//##CHR(10)##/ maxTranzCount = MAX( maxTranzCount, tranzCount );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ docCode = "";/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ nn = warecode;/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ kolp = VAL( Quantity );/##CHR(13)##//##CHR(10)##/ summasale = VAL( SummWD );/##CHR(13)##//##CHR(10)##/ summa = VAL( Summ );/##CHR(13)##//##CHR(10)##/ cena = VAL( Price );/##CHR(13)##//##CHR(10)##/ nnname = "";/##CHR(13)##//##CHR(10)##/ ed = "";/##CHR(13)##//##CHR(10)##/ kodn = "";/##CHR(13)##//##CHR(10)##/ client = "";/##CHR(13)##//##CHR(10)##/ summabn = 0.00;/##CHR(13)##//##CHR(10)##/ КоличествоМарок = 0;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Анализируем тип транзакции и в зависимости от него выполняем разные действия/##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие смены. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ //------- Операция - Z-отчет. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ IF ( ( tranzType == "61" AND ИСТОЧНИКДАТЫ == 3 ) OR ( tranzType == "63" AND ИСТОЧНИКДАТЫ == 4 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ IF ( ИСТОЧНИКДАТЫ == 3 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND fr_code= " + ecrNumber );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие чека. Проставляем код клиента./##CHR(13)##//##CHR(10)##/ IF ( tranzType == "55" AND VAL( documentClient ) <> 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Определяем код клиента по доп. коду и проставляем его для всего чека./##CHR(13)##//##CHR(10)##/ client = ЗАПРОС( "SELECT code FROM sprclient WHERE dbo.fn_chartoint( ex_code )= " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET client = ''" + client + "'' WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Округления /##CHR(13)##//##CHR(10)##/ //IF ( tranzType == "55" )/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "49" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Необходимо рассчитать процент скидки/##CHR(13)##//##CHR(10)##/ СуммаЧека = ЗАПРОС( "SELECT SUM( summasale ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE " + ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND ecrNumber = " + STR( VAL( ecrNumber ) ) + " AND transtype IN ( 1, 2, 11, 12 ) ");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ЗНАК( СуммаЧека ) != ЗНАК( VAL( SummWD ) ) )/##CHR(13)##//##CHR(10)##/ SummWD = СТРОКА( -VAL( SummWD ), 16, 2 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ABS( СуммаЧека ) > ABS( VAL( SummWD ) ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Пересчитываем суммы в чеке/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summasale = summasale - " + СТРОКА( СуммаЧека - VAL( SummWD ), 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = /##CHR(13)##//##CHR(10)##/ (SELECT MIN( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND " +/##CHR(13)##//##CHR(10)##/ "ecrNumber = " + STR( VAL( ecrNumber ) ) + " AND " +/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND transtype IN ( 1, 2, 11, 12 ) )");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - отмена чека /##CHR(13)##//##CHR(10)##/ IF ( tranzType == "56" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если данные содержат уникальный номер документа, то помечаем на удаление чек по этому номеру./##CHR(13)##//##CHR(10)##/ // Иначе просто по номеру чека/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET f_deleted = 1 WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND " + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- В транзакциях оплаты сумма записывается в поле 12/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "40" OR tranzType == "41" OR tranzType == "43" )/##CHR(13)##//##CHR(10)##/ Summa = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Безналичные оплаты/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "43" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( AspectsList <> "1" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Summabn = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##/ //------ Проставляем сумму безналичной оплаты у одной из записей о продаже/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summabn = summabn + " + STR( summabn, 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = (SELECT MAX( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 ) AND fr_code= " + ecrNumber + ")");/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ // Отмечаем особым образом транзакции для отображения в документе в виде без/нала/##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ("_ФРОНТОЛ_ДЕЛИТЬСТРОКИДКСПОВИДАМОПЛАТЫ", false ) )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET chequetype = " + VAL( aspectsList ) * 100 + " + chequetype WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 )");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- ПРОДАЖА/##CHR(13)##//##CHR(10)##/ // Для пропуска транзакций Вскрытие тары изменить строку на такую/##CHR(13)##//##CHR(10)##/ // IF ( ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" ) AND chequeType != "18" )/##CHR(13)##//##CHR(10)##/ //IF ( (tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12") AND chequeType != "25" )/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCodePredefined = IIF( chequeType <> "6" AND chequeType <> "14" AND chequeType <> "15" AND chequeType <> "16" AND chequeType <> "18", "008", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCode = IIF( !ПУСТО( docCodePredefined ), docCodePredefined, /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''18'', "046", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ2, dockIndCode ) > 0, "007", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ3, dockIndCode ) > 0, "001", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ4, dockIndCode ) > 0, "002", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ5, dockIndCode ) > 0, "003", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ6, dockIndCode ) > 0, "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''14'' OR chequeType == ''15'', "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''16'', "007", "008" )))))))));/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //инвентаризация/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ2 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ2, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "007"; /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //приходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ3 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ3, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "001";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //расходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ4 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ4, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "002";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //списание, оприходование/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ5 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ5, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "003";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //внутреннее перемещение/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ6 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ6, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "019";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если не определили по кодам документов, то ставим тип "ДКС"/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( docCode ) )/##CHR(13)##//##CHR(10)##/ docCode = "008";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем строки из документа, отличного от ДКС, то разделим их по номерам документов/##CHR(13)##//##CHR(10)##/ IF ( docCode <> "008" )/##CHR(13)##//##CHR(10)##/ docid = chequeNumber;/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ docid = 0;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ nnname = IIF( docCode <> "008", "Операция по свободной цене", "Свободная продажа");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Пытаемся сопоставить товар с выбранными разрезами/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Определяем код головного товара/##CHR(13)##//##CHR(10)##/ warecode = ЗАПРОС("SELECT code FROM sprres WHERE ISNULL(LTRIM(RTRIM(maincode)), '''')=''" + wareCode + "''");/##CHR(13)##//##CHR(10)##/ aspCond1 = IIF( !EMPTY( AspectValue1 ) AND AspectValue1 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 1 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue1 + ")", "");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ aspCond2 = IIF( !EMPTY( AspectValue2 ) AND AspectValue2 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 2 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue2 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond3 = IIF( !EMPTY( AspectValue3 ) AND AspectValue3 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 3 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue3 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond4 = IIF( !EMPTY( AspectValue4 ) AND AspectValue4 <> "999999999", /##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 4 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue4 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond5 = IIF( !EMPTY( AspectValue5 ) AND AspectValue5 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 5 AND /##CHR(13)##//##CHR(10)##/ sprres_gdlist.code = sprres.group_ AND/##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue5 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ nn = ЗАПРОС("SELECT sprres.maincode /##CHR(13)##//##CHR(10)##/ FROM sprres /##CHR(13)##//##CHR(10)##/ WHERE sprres.subcode= ''" + warecode + "'' " + aspCond1 + aspCond2 + aspCond3 + aspCond4 + aspCond5);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ store_period = 0;/##CHR(13)##//##CHR(10)##/ //------ Если получилось установить код товара, то определяем остальные его параметры /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( nn ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем настоящий nn из sprnn по maincode/##CHR(13)##//##CHR(10)##/ IF ( !ДОБАВИТЬКОНТЕКСТ( "SELECT s.code, s.cat, s.name, s.ed, s.kodn, s.weight, s.d_litr, s.ed_weight, /##CHR(13)##//##CHR(10)##/ s.edd_litr, ISNULL( d.sklad, '''' ) AS sklad, ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprres s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.group_ = d.code /##CHR(13)##//##CHR(10)##/ WHERE ISNULL( LTRIM( RTRIM( maincode ) ), '''' ) = ''" + ALLTRIM( nn ) + "''", "ТОВАРИНФО" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Закрываем файл, удаляем последний контекст и убираем лишние окна/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокФР" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАКРЫТЬ( fileHandle );/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Ошибка выполнение запроса ''" + _ERRORDESCRIPTION + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "001", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ s_code = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "002", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ weight_lab = IIF( !EMPTY( ТОВАРИНФО.weight ), ALLTRIM( STR( ТОВАРИНФО.weight, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.ed_weight), "" );/##CHR(13)##//##CHR(10)##/ volume_lab = IIF( !EMPTY( ТОВАРИНФО.d_litr), ALLTRIM( STR( ТОВАРИНФО.d_litr, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.edd_litr ), "" );/##CHR(13)##//##CHR(10)##/ weivol_lab = IIF( !EMPTY( weight_lab ), weight_lab, volume_lab );/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ) + IIF( !EMPTY( weivol_lab ), " " + weivol_lab, "" ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ЕСЛИ( docCode == "046", "шт", ТОВАРИНФО.ed );/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR !БРАТЬСКЛАДЫИЗГРУПП, kkmsklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ // Если был прочитан ШК, то ищем ЕД для этого ШК и пересчитываем количество/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( nn ) AND !ПУСТО( barcodereg ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT ed, koef, koef_c FROM sprres_ed WHERE code = ''" + nn + "'' AND barcode = ''" + STDF( barcodereg ) + "''", "ЕдиницаИнфо" );/##CHR(13)##//##CHR(10)##/ IF ( КОЛИЧЕСТВОСТРОК( "ЕдиницаИнфо" ) > 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ed = ЕдиницаИнфо.ed;/##CHR(13)##//##CHR(10)##/ cena = cena * ЕдиницаИнфо.koef_c;/##CHR(13)##//##CHR(10)##/ kolp = kolp / ЕСЛИ( ЕдиницаИнфо.koef == 0, 1, ЕдиницаИнфо.koef );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "ЕдиницаИнфо" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Если пытались разобрать разрезы и не нашли нужного товара/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем начальное значение имени и прочие реквизиты из заголовочного товара/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT s.name, s.ed, s.kodn, ISNULL( d.sklad, '''' ) AS sklad, /##CHR(13)##//##CHR(10)##/ ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprnn s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.nngroup = d.code /##CHR(13)##//##CHR(10)##/ WHERE nn = ''" + ALLTRIM( warecode ) + "''", "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = "";/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ТОВАРИНФО.ed;/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR !БРАТЬСКЛАДЫИЗГРУПП, kkmsklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Пытаемся сформировать список разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT sprres_gdlist.f_num, spranalit.sprcode /##CHR(13)##//##CHR(10)##/ FROM sprnn /##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_gdlist ON sprnn.nngroup = sprres_gdlist.code /##CHR(13)##//##CHR(10)##/ INNER JOIN sprdim ON sprres_gdlist.d_code = sprdim.code /##CHR(13)##//##CHR(10)##/ INNER JOIN spranalit ON spranalit.code = SUBSTRING(sprdim.type_, 16, 3) /##CHR(13)##//##CHR(10)##/ WHERE sprnn.nn= ''" + warecode + "'' ", "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ // Проходим по списку разрезов и формируем название/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СПИСОКРАЗРЕЗОВ" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ aspcode = IIF( f_num == 1, AspectValue1, IIF( f_num == 2, AspectValue2, IIF( f_num == 3, AspectValue3, /##CHR(13)##//##CHR(10)##/ IIF( f_num == 4, AspectValue4, IIF( f_num == 5, AspectValue5, "0" ) ) ) ) );/##CHR(13)##//##CHR(10)##/ aspname = ЗАПРОС( "SELECT name FROM sprmain WHERE scode= ''" + СПИСОКРАЗРЕЗОВ.sprcode + "'' AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint( code )= " + STR( VAL( aspcode ) ) );/##CHR(13)##//##CHR(10)##/ nnname = ALLTRIM( nnname ) + '' / '' + ALLTRIM( aspname );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем постановку на кран, то необходимо сформировать документ для отправки в ЧЗ/##CHR(13)##//##CHR(10)##/ IF ( VAL( chequeType ) == 27 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ КомментарийПостановки = "Касса """ + ALLTRIM( ИМЯОБОРУДОВАНИЯ ) + """ | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzCount ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzDate ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzTime ) + " | " + /##CHR(13)##//##CHR(10)##/ "док. № " + ALLTRIM( chequeNumber );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДатаВремяПостановки = CTOD( tranzDate + " " + tranzTime, 4 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( store_period ) )/##CHR(13)##//##CHR(10)##/ expirationDate = ДОБАВИТЬДНИ( ДатаВремяПостановки, store_period );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ expirationDate = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ __SQL()/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ --добавим документ постановки на кран/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF NOT EXISTS( SELECT TOP 1 * FROM mark_reciept_spec spec/##CHR(13)##//##CHR(10)##/ INNER JOIN mark_reciept mark ON mark.identity_column = spec.ic/##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' /##CHR(13)##//##CHR(10)##/ AND mark.action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND mark.note = ''[[ КомментарийПостановки ]]'' ) /##CHR(13)##//##CHR(10)##/ BEGIN/##CHR(13)##//##CHR(10)##/ EXEC sp_rmk_markdoc ''[[ firm ]]'', ''[[ nn ]]'', ''[[ КомментарийПостановки ]]'', ''[[ STDF( sgtin ) ]]'', [[ kolp ]], ''[[ TTOC( expirationDate ) ]]'', ''beer''/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ --установим дату для созданного документа из транзакций и установим склад/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ UPDATE mark_reciept/##CHR(13)##//##CHR(10)##/ SET date = ''[[ TTOC( ДатаВремяПостановки ) ]]'',/##CHR(13)##//##CHR(10)##/ sklad = ''[[ sklad ]]''/##CHR(13)##//##CHR(10)##/ WHERE identity_column = ( SELECT TOP 1 ic FROM mark_reciept_spec spec /##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' )/##CHR(13)##//##CHR(10)##/ AND action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND note = ''[[ КомментарийПостановки ]]''/##CHR(13)##//##CHR(10)##/ END /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SQLERROR/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Ошибка при записи документа ""Постановка на кран"" с номером " + /##CHR(13)##//##CHR(10)##/ chequeNumber + " от " + tranzDate + " " + tranzTime + CHR(13) + CHR(10) +/##CHR(13)##//##CHR(10)##/ "Описание ошибки: " + _ERRORDESCRIPTION, "Загрузка Постановки на кран" ); /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь добавляем запись в таблицу ИМЯТАБЛИЦЫ/##CHR(13)##//##CHR(10)##/ sklad_d = "";/##CHR(13)##//##CHR(10)##/ IF ( docCode == "019" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ sklad_d = sklad;/##CHR(13)##//##CHR(10)##/ sklad = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем операцию постановки на кран (27) или снятия с крана (28), то пропускаем их загрузку в таблицу/##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( VAL( chequeType ), 27, 28 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ЗАПРОС( "INSERT INTO " + ИМЯТАБЛИЦЫ + "(id, date, transtype, posnumber, doccode, seller, waremark, chequeNumber, chequetype, /##CHR(13)##//##CHR(10)##/ ecrsession, infostr, ecrnumber, ndok, docid, note, inouttype, nn, s_code, nnname, ed, /##CHR(13)##//##CHR(10)##/ kodn, client, contract, kolp, barcode, gtd, ksnum, summasale, summabn, summa, cena, /##CHR(13)##//##CHR(10)##/ firm, sklad, mol, sklad_d, mol_d, kskod, fr_code, manager, warecode, aspectvalue1, equipment )/##CHR(13)##//##CHR(10)##/ VALUES ( /##CHR(13)##//##CHR(10)##/ " + STR( tranzCount ) + ", ''" + TTOC( date ) + "'', " + tranzType + ", " + STR( posNumber ) + ", ''" + doccode + "'',/##CHR(13)##//##CHR(10)##/ " + seller + ", ''" + STDF( wareMark, 250 ) + "'', " + chequeNumber + ", " + chequeType + ", " + STR( VAL( ecrSession ) ) + ", ''" + karta + "'',/##CHR(13)##//##CHR(10)##/ " + ecrNumber + ", ''" + universalNDOK + "'', " + docid + ", '''', '''', ''" + nn + "'', ''" + s_code + "'', ''" + STDF( nnname, 250 ) + "'',/##CHR(13)##//##CHR(10)##/ ''" + ed + "'', ''" + kodn + "'', ''" + client + "'', '''', " + STR( kolp, 16, 3 ) + ", ''" + STDF( barcode ) + "'', '''', /##CHR(13)##//##CHR(10)##/ " + STR( VAL( ecrSession ) ) + ", " + STR( summasale, 16, 3 ) + ", " + STR( summabn, 16 ,3 ) + ", " + STR( summa, 16 ,3 ) + ",/##CHR(13)##//##CHR(10)##/ " + STR( cena, 16 ,3 ) + ", ''" + firm + "'', ''" + sklad + "'', '''', ''" + sklad_d + "'', '''', ''" + kskod + "'', " + ecrNumber + ", /##CHR(13)##//##CHR(10)##/ ''" + manager + "'', ''" + warecode_org + "'', " + STR( VAL( AspectValue1 ) ) + ", ''" + КодКассы + "'' )" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ foundTranz = true;/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если указана конкретная дата для создания документов, то используем ее, предварительно записываем транзакции/##CHR(13)##//##CHR(10)##///IF ( ИСТОЧНИКДАТЫ == 2 )/##CHR(13)##//##CHR(10)##/// ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET date = ''" + TTOC( ДАТАДОКУМЕНТОВ ) + "''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///------- Если выбран вариант загрузки по дате закрытия смены, /##CHR(13)##//##CHR(10)##///------- и в списке транзакций остались транзакции без z_date, то /##CHR(13)##//##CHR(10)##///------- таким транзакциям проставляем текущую дату. Иначе, будет создано много документов/##CHR(13)##//##CHR(10)##/IF ( ИСТОЧНИКДАТЫ == 3 OR ИСТОЧНИКДАТЫ == 4 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( ДатаВремя( ) ) + "'' WHERE z_date= ''''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/Индикатор( );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Закрываем файл, удаляем последний контекст и убираем лишние окна/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокФР" );/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/// Ждем секунду, чтобы файл действительно закрылся. /##CHR(13)##//##CHR(10)##/Ожидание( 1000 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ФАЙЛУДАЛИТЬ( ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !БылиТранзакцииПоФРВыбранномуВТО ) MessageBox("В файле не обнаружены транзакции по ФР, указанным в карточке ТО");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',248.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_flag_in_alter = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "'' AND path_in_alter <> ''''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_flag_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = path_flag_in_alter;/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕСЛИ( !РучнойОбмен, ИмяФайлаФлага, "" );',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',249.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',270.00000000,'//Текст ошибки драйвера ККМ. /##CHR(13)##//##CHR(10)##///Обработка должна вернуть строку, содержащую описание последней возникшей ошибки при работе с ККМ./##CHR(13)##//##CHR(10)##/RETURN _ТЕКСТОШИБКИ;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',271.00000000,'//Последняя ошибка драйвера ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое - код последней ошибки драйвера ККМ./##CHR(13)##//##CHR(10)##/RETURN _КОДОШИБКИ;',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',272.00000000,'//Признак наличия ошибки ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если в результате выполнения последней операции с ККМ возникла ошибка. Иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN !EMPTY( _КОДОШИБКИ );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:13') #command INSERT INTO spreqprofiles (CODE,EX_CODE,NAME,TYPE,PORT,NOTE,PARENT,POSORDER,NOTAVAIL,MAINDB,MAINIC,CACCESS,TACCESS,FOLDER,RID,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('','','Обмен данными с Фронтол 6 (вскрытие тары)','ККМ',0.00000000,'Профиль обмена с программным обеспечением Frontol 6.19.2 и выше. Совместим с Айтида, начиная с версии 4.5.0. Поддерживает выгрузку мерного алкоголя двумя карточками: одна карточка товара с алкопризнаками для вскрытия, вторая - обычный товар для розни',0.00000000,7405.00000000,0,'',0.00000000,'','',0,'C29C1AE6-C64C-4715-90E0-5DCD5B416E99',0,1,0,'04.04.2024 11:23:13') #begin #description Обмен данными с Фронтол XPos 3 #name Обмен данными с Фронтол XPos 3 #code 0000000430 #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',200.00000000,'//Инициализация ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',201.00000000,'// Параметр, отвечает за необходимость дописывать к наименованию товара его вес или объем/##CHR(13)##//##CHR(10)##/// значение "0" - не дописывать, любое другое значение - дописывать/##CHR(13)##//##CHR(10)##/IN_PARAM_NAME_WEIGHT = 1;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///Подготовка к выгрузке данных в ККМ./##CHR(13)##//##CHR(10)##///------ Если указанный файл-флаг уже существует, это говорит о том, что предыдущие данные еще не были загружены в ККМ, поэтому в эту ККМ данные не выгружаем/##CHR(13)##//##CHR(10)##/_КОДОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ТЕКСТОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ОШИБКАВЫПОЛНЕНИЯ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( exchangeservice_out ) AND !ПУСТО( path_flag_out ) AND ФАЙЛ( ALLTRIM( path_flag_out ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Обнаружены необработанные данные (найден файл-флаг " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( path_flag_out ) + "), поэтому новые данные выгружены не были.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',204.00000000,'//Начало выгрузки товаров в /##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) AND ПУСТО( exchangeservice_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLWARES" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Иначе подаем команды на удаление отдельных товаров/##CHR(13)##//##CHR(10)##/ IF ( saldotype <> 1 AND !СОХРАНЯТЬТОВАРЫ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEWARESBYWARECODE" );/##CHR(13)##//##CHR(10)##/ // Достаем список выгружаемых товаров, проходим по нему и записываем команду удаления для каждого товара/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 ) /##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ + " WHERE f_subres = 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( f_nalogs )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем налоговые группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXRATES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name, proc_, ntype, ex_code FROM sprkodn WHERE proc_ <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ) + " ORDER BY proc_", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ НомерНалогаВККМ = ЕСЛИ( ПУСТО( СписокНалогов.ntype ), ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "4", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "05", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "2", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "06", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "3", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "07", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "1", СписокНалогов.ex_code ), "" ) ) ) );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) )+ ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";0;" + STR( СписокНалогов.proc_ ) + ";" + НомерНалогаВККМ );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name FROM sprlistkodn ORDER BY code", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT list FROM speclistkodn WHERE code = ''" + СписокНалогов.code + "'' AND ( SELECT proc_ FROM sprkodn WHERE code= speclistkodn.list ) <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ), "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPRATES" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СоставНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СоставНалогов.list ) ) + ";0;" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //очистка реквизитов агента при установке флага очистки ККМ перед загрузкой/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, name, inn, legal_adress, telefon, agent_type, agent_oper, agent_telephone_pa, agent_name_op, agent_inn_op, agent_address_op, agent_telephone_op, agent_telephone_pp/##CHR(13)##//##CHR(10)##/ FROM sprclient /##CHR(13)##//##CHR(10)##/ WHERE code IN (SELECT sprres.vendor FROM sprres sprres/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " temp ON temp.nn = sprres.code AND sprres.f_agentware = 1 )","ПоставщикиАгенты");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (КОЛИЧЕСТВОСТРОК("ПоставщикиАгенты") > 0)/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "ПоставщикиАгенты" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //формируем строку реквизитов, только обязательными для конкретного типа агента реквизитами для того чтобы правильно формировались тэги в чеке/##CHR(13)##//##CHR(10)##/ IF ( VAL(ПоставщикиАгенты.agent_type) == 0 OR VAL(ПоставщикиАгенты.agent_type) == 1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";;;;;" + LEFT( ПоставщикиАгенты.agent_telephone_pp , 100 ) + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 2 OR VAL(ПоставщикиАгенты.agent_type) == 3 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( ПоставщикиАгенты.agent_oper ), 24 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";" + LEFT ( ПоставщикиАгенты.agent_name_op, 64 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT ( ПоставщикиАгенты.agent_inn_op, 10) + ";" + LEFT( ПоставщикиАгенты.agent_address_op , 256 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_op , 100 ) + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 4 OR VAL(ПоставщикиАгенты.agent_type) == 5 OR VAL(ПоставщикиАгенты.agent_type) == 6 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;;;;;;;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СтрокаПоставщика))/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СтрокаПоставщика );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ПоставщикиАгенты" ); /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',205.00000000,'//Выгрузка папок товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Из временной таблицы достаем список папок товаров, сортируя его по родительской папке /##CHR(13)##//##CHR(10)##/КодСтруктурыТоваров = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S02'' ) " );/##CHR(13)##//##CHR(10)##/КодСтруктурыУслуг = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S05'' ) " );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст("SELECT name, ic, /##CHR(13)##//##CHR(10)##/ CASE WHEN parent IN (SELECT ic FROM spectree/##CHR(13)##//##CHR(10)##/ WHERE code IN ( ''" + КодСтруктурыТоваров + "'', ''" + КодСтруктурыУслуг + "'') AND /##CHR(13)##//##CHR(10)##/ folder= 1 AND parent= 0 ) THEN 0 ELSE parent END AS parent/##CHR(13)##//##CHR(10)##/ FROM (/##CHR(13)##//##CHR(10)##/ SELECT name, ic, parent, identity_column/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S02'', 0, ''" + КодСтруктурыТоваров + "'', 0 ) AS tmcfolders/##CHR(13)##//##CHR(10)##/ UNION SELECT name, ic, parent, identity_column + 100000000/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S05'', 0, ''" + КодСтруктурыУслуг + "'', 0 ) AS srvfolders/##CHR(13)##//##CHR(10)##/ ) AS folders/##CHR(13)##//##CHR(10)##/ WHERE ic IN ( SELECT ic FROM " + ПАПКИ + ")/##CHR(13)##//##CHR(10)##/ ORDER BY identity_column", "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( ABS( ic ) + IIF( ic < 0, 2000000000, 1000000000 ) ) ) + ";" + //1. идентификатор/##CHR(13)##//##CHR(10)##/ ";" + //2. /##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //3. наименование/##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //4. текст/##CHR(13)##//##CHR(10)##/ ";" + //5. /##CHR(13)##//##CHR(10)##/ ";" + //6. /##CHR(13)##//##CHR(10)##/ ";" + //7. не используется/##CHR(13)##//##CHR(10)##/ ";" + //8. /##CHR(13)##//##CHR(10)##/ "0.00" + ";" + //9. минимальная цена/##CHR(13)##//##CHR(10)##/ ";" + //10. /##CHR(13)##//##CHR(10)##/ "0" + ";" + //11. код схемы разрезов/##CHR(13)##//##CHR(10)##/ ";" + //12. /##CHR(13)##//##CHR(10)##/ ";" + //13. /##CHR(13)##//##CHR(10)##/ ";" + //14. /##CHR(13)##//##CHR(10)##/ ";" + //15. не используется/##CHR(13)##//##CHR(10)##/ ALLTRIM( STR( IIF( EMPTY( parent ), "", ABS( parent ) + IIF(ic < 0, 2000000000, 1000000000 ) ) ) ) + ";" + //16.код родительской группы/##CHR(13)##//##CHR(10)##/ "0" + ";" + //17. товар или группа. "0" для группы/##CHR(13)##//##CHR(10)##/ ";" + //18. /##CHR(13)##//##CHR(10)##/ ";" + //19. /##CHR(13)##//##CHR(10)##/ ";" + //20. /##CHR(13)##//##CHR(10)##/ ";" + //21. /##CHR(13)##//##CHR(10)##/ ";" + //22. /##CHR(13)##//##CHR(10)##/ ";" + //23. код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. /##CHR(13)##//##CHR(10)##/ ";" + //25. /##CHR(13)##//##CHR(10)##/ ";" + //26. артикул/##CHR(13)##//##CHR(10)##/ ";" + //27. тип скидки/##CHR(13)##//##CHR(10)##/ ";" + //28. значение скидки/##CHR(13)##//##CHR(10)##/ ";" + //29. максимальная скидка/##CHR(13)##//##CHR(10)##/ ";" + //30. /##CHR(13)##//##CHR(10)##/ ";" + //31. файл с картинкой/##CHR(13)##//##CHR(10)##/ ";" + //32. описание/##CHR(13)##//##CHR(10)##/ ";" + //33. /##CHR(13)##//##CHR(10)##/ ";" + //34. /##CHR(13)##//##CHR(10)##/ ";" + //35. /##CHR(13)##//##CHR(10)##/ ";" + //36. /##CHR(13)##//##CHR(10)##/ ";" + //37./##CHR(13)##//##CHR(10)##/ ";" + //38./##CHR(13)##//##CHR(10)##/ ";" + //39. код группы печати чека/##CHR(13)##//##CHR(10)##/ ";" + //40. код группы печати копии/##CHR(13)##//##CHR(10)##/ ";" + //41. код группы печати счета/##CHR(13)##//##CHR(10)##/ ";" + //42. код группы печати марки/##CHR(13)##//##CHR(10)##/ ";"; //43. код предприятия/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',206.00000000,'//Выгрузка разрезов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если в карточке оборудования стоит признак выгружать разрезы товаров, то выгружаем их/##CHR(13)##//##CHR(10)##/IF ( f_razr AND ( aspecttype == 2 OR aspecttype == 0) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем схемы разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, name FROM " + СХЕМЫРАЗРЕЗОВ, "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTSCHMS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СхемыРазрезов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + LEFT( ALLTRIM( name ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( name ), 100 ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь выгружаем сами разрезы/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTS" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ПерейтиВНачало( );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, f_num, name FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE schemecode = ''" + СхемыРазрезов.schemecode + "''", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + STR( f_num, 1 ) + ";" + mName + ";" + mName;/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // У использованых записей проставляем поле id, для того, чтобы корректно выгрузить значения разрезов/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + СОСТАВСХЕМРАЗРЕЗОВ + " SET id= " + STR( f_num ) + " WHERE schemecode= ''" + schemecode + "'' AND f_num= " + STR( f_num ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Выгружаем значения разрезов/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTVALUES" );/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, id, aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE id <> 0", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Выгружаем список значений разрезов соответствующий текущей строке состава схемы/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode, valuecode, name FROM " + ЗНАЧЕНИЯРАЗРЕЗОВ + " WHERE aspectcode = ''" + СоставСхемы.aspectcode + "''", "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";" + STR( VAL( valuecode ) ) + ";" + mName + ";" + mName + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Для каждого разреза добавляем специальное "пустое" значение с кодом 999999999/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";999999999;;;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',207.00000000,'//Подготовка к выгрузке товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',208.00000000,'//Выгрузка всех товаров в ККМ./##CHR(13)##//##CHR(10)##/СтавкаБезНДС = ЗАПРОС( "SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM sprlistkodn /##CHR(13)##//##CHR(10)##/ WHERE code = ( SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM speclistkodn /##CHR(13)##//##CHR(10)##/ WHERE list = ( SELECT TOP 1 code FROM/##CHR(13)##//##CHR(10)##/ sprkodn /##CHR(13)##//##CHR(10)##/ WHERE ntype = '''' ) )");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КодФирмыОборудования = ЗАПРОС("SELECT firm FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''");/##CHR(13)##//##CHR(10)##///если заполнена фирма в оборудовании, то определяем признак не плательщика НДС из выбранной фирмы/##CHR(13)##//##CHR(10)##///иначе берем выбранныю фирму в группе ресурсов/##CHR(13)##//##CHR(10)##/ЧастьЗапросаФирмаБезНДС = "";/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( КодФирмыОборудования ) )/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = ''" + КодФирмыОборудования + "'' ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = temp.firm ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///если в группе ресурсов не указана фирма, а указан код ФР и заполнен список фирм в оборудовании, то второй запрос поменять на/##CHR(13)##//##CHR(10)##///ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = (SELECT TOP 1 firm FROM " + СПИСОКФР + " WHERE fr_code = temp.nkkm ) ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса = "";/##CHR(13)##//##CHR(10)##/ЧастьЗапросаРеквизитовАгента = "";/##CHR(13)##//##CHR(10)##/mAgentDetailsCode = "";/##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента = ", sprres.f_agentware AS sprres_f_agentware, sprres.vendor AS sprres_vendor "/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ("Подготовка к формированию файла выгрузки");/##CHR(13)##//##CHR(10)##/ТекстЗапроса = "SELECT temp.*, /##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnnname( sprres.code ) ELSE sprres.name END AS sprres_name,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnncname( sprres.code ) ELSE sprres.shortname END AS sprres_shortname, /##CHR(13)##//##CHR(10)##/ sprres.nnvid AS sprres_nnvid, /##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprres.nnvid ) AS sprres_alcotype, /##CHR(13)##//##CHR(10)##/ ISNULL( (SELECT MAX( d_litr ) FROM sprres_egais WHERE code = sprres.code), 0 ) AS spregais_d_litr, /##CHR(13)##//##CHR(10)##/ sprres.d_litr AS sprres_d_litr, /##CHR(13)##//##CHR(10)##/ sprres.a_proc AS sprres_a_proc, /##CHR(13)##//##CHR(10)##/ sprres.ed AS sprres_ed, /##CHR(13)##//##CHR(10)##/ (SELECT ffdcode FROM spredn WHERE code = sprres.ed) AS ffdcode, /##CHR(13)##//##CHR(10)##/ (SELECT f_volume FROM spredn WHERE code = sprres.ed) AS ed_f_volume, /##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.rsubject, '''' ) AS spr_rsubject, /##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.paytype, '''' ) AS spr_paytype, /##CHR(13)##//##CHR(10)##/ sprres.f_make AS sprres_f_make, /##CHR(13)##//##CHR(10)##/ sprres.cat AS sprres_cat, /##CHR(13)##//##CHR(10)##/ sprres.markgroup AS sprres_markgroup, /##CHR(13)##//##CHR(10)##/ sprres.f_mark AS sprres_f_mark, /##CHR(13)##//##CHR(10)##/ sprres.f_marknotrequire AS sprres_f_marknotrequire, /##CHR(13)##//##CHR(10)##/ sprres.f_draft AS sprres_f_draft,/##CHR(13)##//##CHR(10)##/ sprres.gtin AS sprres_gtin, /##CHR(13)##//##CHR(10)##/ sprres.enterprice AS sprres_enterprice,/##CHR(13)##//##CHR(10)##/ ISNULL( dbo.fn_getint_ex(''SPR'', ''S02'', ''ФронтолБезВводаКоличества'', sprres.code, '''', '''', '''' ), 0 ) AS noenterquantity,/##CHR(13)##//##CHR(10)##/ (SELECT TOP 1 fr_code FROM " + СПИСОКФР + " WHERE firm = temp.firm) AS tovar_firm " +/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС + /##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/kodGrPintChek = "";/##CHR(13)##//##CHR(10)##/kodGrPintCopy = "";/##CHR(13)##//##CHR(10)##/kodGrPintInvoice = "";/##CHR(13)##//##CHR(10)##/kodGrPintMark = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintChek,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintCopy,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintInvoice,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintMark "; /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/vizualmodif = "";/##CHR(13)##//##CHR(10)##/ЛеваяГраница = "";/##CHR(13)##//##CHR(10)##/ПраваяГраница = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", dbo.fn_getint_ex( ''SPR'', ''S02'', ''ВизуальныйВыборМодификаторов'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS vizualmodif,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ЛеваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ЛеваяГраница,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ПраваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ПраваяГраница ";/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса += " FROM " + ТОВАРЫ + " temp /##CHR(13)##//##CHR(10)##/INNER JOIN sprres sprres ON temp.code = sprres.maincode /##CHR(13)##//##CHR(10)##/LEFT OUTER JOIN sprres_g sprres_g ON sprres.group_ = sprres_g.code";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ(ТекстЗапроса,"СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрокОбщее = КоличествоСтрок("СписокТоваров");/##CHR(13)##//##CHR(10)##/Индикатор("Выгрузка товаров",КоличествоСтрокОбщее);/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок=0;/##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО("СписокТоваров");/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ( "Формирование файла выгрузки");/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //СИСТЕМНОЕСООБЩЕНИЕ( "Пожалуйста, подождите.");/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, " Выгрузка товаров. Обработка " + Alltrim(КоличествоСтрок) + " из " + ALLTRIM(КоличествоСтрокОбщее) );/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если указано выгружать только разрезы, без самих карточек, то пропускаем карточки разрезов/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 AND СписокТоваров.f_subres )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Вычисляем код ФР, который должен использоваться с товаром/##CHR(13)##//##CHR(10)##/ // Если в группе ресурсов указан конкретный код - берем его/##CHR(13)##//##CHR(10)##/ // Иначе, берем фирму и по ней ищем код ФР в l_frlist/##CHR(13)##//##CHR(10)##/ mFr_code = ЕСЛИ( VAL( nkkm ) != 0, nkkm, СписокТоваров.tovar_firm ); // Фронтол 5.9 перестал понимать 22-е поле адекватно. Теперь оно выгружается как код группы печати чека, если не указано иное/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ mBarcode = ""; //ALLTRIM( СписокТоваров.barcode ); ШК выгрузятся в разделе ШК. Здесь они могут помешать, например для весового товара/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ rsubject = STR( VAL( СписокТоваров.spr_rsubject ) );/##CHR(13)##//##CHR(10)##/ mPaytype = "2";/##CHR(13)##//##CHR(10)##/ IF ( VAL( СписокТоваров.spr_paytype ) == 1 OR VAL( СписокТоваров.spr_paytype ) == 2 )/##CHR(13)##//##CHR(10)##/ mPaytype = STR( VAL( СписокТоваров.spr_paytype ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mName = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( name ), sprres_name ), 100 );/##CHR(13)##//##CHR(10)##/ mCname = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( cname ), sprres_shortname ), 100 ); // Краткое наименование используется для чека/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокТоваров.sprres_alcotype ) == 1;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = VAL( СписокТоваров.sprres_alcotype ) == 2;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( СписокТоваров.sprres_nnvid, "481" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = false;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mNNVid = СписокТоваров.sprres_nnvid;/##CHR(13)##//##CHR(10)##/ mVolume = STR( ЕСЛИ( VAL( СписокТоваров.spregais_d_litr ) != 0, СписокТоваров.spregais_d_litr, СписокТоваров.sprres_d_litr ), 10, 6 );/##CHR(13)##//##CHR(10)##/ mAProc = STR( СписокТоваров.sprres_a_proc, 10, 2 );/##CHR(13)##//##CHR(10)##/ mEnterPrice = СписокТоваров.sprres_enterprice;/##CHR(13)##//##CHR(10)##/ mNoEnterquantity = СписокТоваров.noenterquantity;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //значение по умолчанию - обычный товар/##CHR(13)##//##CHR(10)##/ mF_marknotrequire = "1";/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_mark )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //Код группы маркируемого товара:/##CHR(13)##//##CHR(10)##/ //0005 - табачная продукция, /##CHR(13)##//##CHR(10)##/ //1520 - обувь, /##CHR(13)##//##CHR(10)##/ //0002 - изделия из меха, /##CHR(13)##//##CHR(10)##/ //0003 - лекарственные препараты, /##CHR(13)##//##CHR(10)##/ //9999 - прочая, /##CHR(13)##//##CHR(10)##/ //9998 - легпром, /##CHR(13)##//##CHR(10)##/ //9997 - шины, /##CHR(13)##//##CHR(10)##/ //9996 - фото, /##CHR(13)##//##CHR(10)##/ //9995 - духи и парфюм, /##CHR(13)##//##CHR(10)##/ //9994 - альтернативный табак, /##CHR(13)##//##CHR(10)##/ //9993 - молочная продукция, /##CHR(13)##//##CHR(10)##/ //9992 - вода/##CHR(13)##//##CHR(10)##/ //9991 - ювелирная продукция/##CHR(13)##//##CHR(10)##/ //9990 - никотинсодержащая продукция/##CHR(13)##//##CHR(10)##/ //9989 - пиво и пивные напитки/##CHR(13)##//##CHR(10)##/ //Все то что отмечено флагом "Маркированный", но со значением отличным от перечисленных, выгружается как значение 7 - прочая маркировка/##CHR(13)##//##CHR(10)##/ //в xPOS3 есть не все типы маркировки/##CHR(13)##//##CHR(10)##/ mMarkGroup = ЕСЛИ( СписокТоваров.sprres_markgroup == "0002", 2, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0003", 3, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0005", 4, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "1520", 5, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9999", 7, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9998", 11, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9997", 10, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9996", 8, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9995", 9, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9994", 12, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9993", 13, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9991", 14, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9992", 15, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9990", 16, 7 ) ) ) ) ) ) ) ) ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mF_marknotrequire = ЕСЛИ( СписокТоваров.sprres_f_marknotrequire, "1", "0");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //для крепкого алкоголя и пива устанавливаем свои признаки /##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 1; //алкогольная продукция/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 1 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 18; //разливное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 0 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 17; //фасованное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( ПивнаяПродукция )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //обычный товар/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_make ) /##CHR(13)##//##CHR(10)##/ rsubject = "5";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_cat == "002" )/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 2 ) //подакцизный товар/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 3 ) //работа/##CHR(13)##//##CHR(10)##/ rsubject = "3";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 4 ) //услуга/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 13 ) //иной предмет расчета/##CHR(13)##//##CHR(10)##/ rsubject = "6";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 10 ) //платеж/##CHR(13)##//##CHR(10)##/ rsubject = "7"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 11 ) //агентское вознаграждение/##CHR(13)##//##CHR(10)##/ rsubject = "8"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 7 ) //лотерейный билет/##CHR(13)##//##CHR(10)##/ rsubject = "9"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 9 ) //результаты интеллектуальной деятельности/##CHR(13)##//##CHR(10)##/ rsubject = "10";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 12 ) //выплата/##CHR(13)##//##CHR(10)##/ rsubject = "11";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 18 ) //курортный сбор/##CHR(13)##//##CHR(10)##/ rsubject = "12";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 27 ) //выдача денежных средств/##CHR(13)##//##CHR(10)##/ rsubject = "13";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1"; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_agentware == true AND !ПУСТО(СписокТоваров.sprres_vendor) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAgentDetailsCode = VAL(СписокТоваров.sprres_vendor);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СписокТоваров.ffdcode))/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.ffdcode == 0 )/##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 10 )/##CHR(13)##//##CHR(10)##/ mffdcode = 1;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 11 )/##CHR(13)##//##CHR(10)##/ mffdcode = 2; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 12 )/##CHR(13)##//##CHR(10)##/ mffdcode = 3;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 20 )/##CHR(13)##//##CHR(10)##/ mffdcode = 4; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 21 )/##CHR(13)##//##CHR(10)##/ mffdcode = 5;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 22 )/##CHR(13)##//##CHR(10)##/ mffdcode = 6;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 30 )/##CHR(13)##//##CHR(10)##/ mffdcode = 7;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 31 )/##CHR(13)##//##CHR(10)##/ mffdcode = 8;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 32 )/##CHR(13)##//##CHR(10)##/ mffdcode = 9;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 40 )/##CHR(13)##//##CHR(10)##/ mffdcode = 10; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 41 )/##CHR(13)##//##CHR(10)##/ mffdcode = 11; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 42 )/##CHR(13)##//##CHR(10)##/ mffdcode = 12;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 50 )/##CHR(13)##//##CHR(10)##/ mffdcode = 13;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 51 )/##CHR(13)##//##CHR(10)##/ mffdcode = 14; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 70 )/##CHR(13)##//##CHR(10)##/ mffdcode = 15; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 71 )/##CHR(13)##//##CHR(10)##/ mffdcode = 16; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 72 )/##CHR(13)##//##CHR(10)##/ mffdcode = 17; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 73 )/##CHR(13)##//##CHR(10)##/ mffdcode = 18;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 80 )/##CHR(13)##//##CHR(10)##/ mffdcode = 19; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 81 )/##CHR(13)##//##CHR(10)##/ mffdcode = 20; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 82 )/##CHR(13)##//##CHR(10)##/ mffdcode = 21; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 83 )/##CHR(13)##//##CHR(10)##/ mffdcode = 22; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 255 )/##CHR(13)##//##CHR(10)##/ mffdcode = 23; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mCena = ALLTRIM( STR( СписокТоваров.cena, 8, 2 ) );/##CHR(13)##//##CHR(10)##/ //------ Обрабатываем товары, у которых не нулевая цена./##CHR(13)##//##CHR(10)##/ //------ Если указано грузить все, то грузим с любой ценой/##CHR(13)##//##CHR(10)##/ //------ Если товар заголовочный (есть разререзы), то цена тоже не важна/##CHR(13)##//##CHR(10)##/ IF ( !ТОВАРЫБЕЗЦЕНЫ AND VAL( mCena ) <= 0 AND !f_hchild )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mMin_cena = IIF( !EMPTY( min_cena ), ALLTRIM( STR( min_cena, 8, 2 ) ), "");/##CHR(13)##//##CHR(10)##/ // Расчитываем срок хранения/##CHR(13)##//##CHR(10)##/ mStore_period = IIF( store_period <> 0, ALLTRIM( DTOC( store_period + DATE( ) ) ), "" );/##CHR(13)##//##CHR(10)##/ // Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_sch = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", STR( VAL( nngroup ) ) );/##CHR(13)##//##CHR(10)##/ // Вариант использования разрезов: 0 — полный список; 1 — заданный список; 2 — заданный список с остатком/##CHR(13)##//##CHR(10)##/ mAspect_var = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", IIF( saldotype > 0, "2", "1" ) );/##CHR(13)##//##CHR(10)##/ // Код родительской группы/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( IIF( parent == 0, "", STR( ABS( parent ) + IIF( parent < 0, 2000000000, 1000000000 ) ) ) );/##CHR(13)##//##CHR(10)##/ // Код налога/##CHR(13)##//##CHR(10)##/ mKodn = IIF( f_nalogs, ALLTRIM( STR( VAL( kodn ) ) ), "" );/##CHR(13)##//##CHR(10)##/ //если в карточке фирмы установлен флаг "Не является плательщиком НДС", то выгружаем ставку БезНДС для товара/##CHR(13)##//##CHR(10)##/ IF ( f_nalogs AND firm_fwonds )/##CHR(13)##//##CHR(10)##/ mKodn = ALLTRIM( STR( VAL( СтавкаБезНДС ) ) );/##CHR(13)##//##CHR(10)##/ // Артикул/##CHR(13)##//##CHR(10)##/ mArticle = LEFT( ALLTRIM( article ), 20 );/##CHR(13)##//##CHR(10)##/ // Путь к картинке/##CHR(13)##//##CHR(10)##/ mImage_path = ALLTRIM( image_path );/##CHR(13)##//##CHR(10)##/ mNote = STDE( note );/##CHR(13)##//##CHR(10)##/ mKkm_section = ALLTRIM( STR( VAL( kkm_section ) ) );/##CHR(13)##//##CHR(10)##/ // Принтер для печати чеков/##CHR(13)##//##CHR(10)##/ mCheckPrinter = ALLTRIM( checkPrinter );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mFlags = IIF( fractqty OR waretype == 0, "1", "0") + "," + //1. дробное количество (весовой)/##CHR(13)##//##CHR(10)##/ "1" + "," + //2. продажа/##CHR(13)##//##CHR(10)##/ "1" + "," + //3. возврат/##CHR(13)##//##CHR(10)##/ "1" + "," + //4. отрицательные остатки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "1", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "0", "1" ) ) + "," + //5. без ввода количества/##CHR(13)##//##CHR(10)##/ "1" + "," + //6. списание остатков/##CHR(13)##//##CHR(10)##/ ЕСЛИ( mEnterPrice, "1", "0" ) + "," + //7. редактирование цены/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "0", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "1", "0" ) ) + "," + //8. ввод количества вручную/##CHR(13)##//##CHR(10)##/ "," + //9. печатать в чеке/##CHR(13)##//##CHR(10)##/ "," + //10. наливаемый товар/##CHR(13)##//##CHR(10)##/ ","; //11. скидки/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mActionPriz = IIF( f_action == 0, IIF( maxdiscount == -1, "", ALLTRIM( STR( maxdiscount, 16, 2 ) ) ), "0");/##CHR(13)##//##CHR(10)##/ // Остаток и PLU/##CHR(13)##//##CHR(10)##/ mTmcSaldo = ALLTRIM( STR( kolp, 10, 3 ) );/##CHR(13)##//##CHR(10)##/ mPlu = ALLTRIM( plu );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mDsc_value = "";/##CHR(13)##//##CHR(10)##/ mVtype = "";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Если у товара указан код скидки, то надо вычислить ее значение/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( discount ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если надо вычислить значение скидки, то вычисляем ее/##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( value );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Вычисляем и подставляем Коды Групп печати/##CHR(13)##//##CHR(10)##/ IF ( !_ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( mFr_code ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ kodGrPintChek = mFr_code;/##CHR(13)##//##CHR(10)##/ kodGrPintCopy = mFr_code;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + //1. код/##CHR(13)##//##CHR(10)##/ mBarcode + ";" + //2. Штрихкоды через запятую (максимальная длина штрихкода не превышает 40 символов)/##CHR(13)##//##CHR(10)##/ STDE( mName, 128 ) + ";" + //3. Наименование/##CHR(13)##//##CHR(10)##/ STDE( mCname, 128 ) + ";" + //4. Текст для чека/##CHR(13)##//##CHR(10)##/ mCena + ";" + //5. Цена/##CHR(13)##//##CHR(10)##/ mTmcSaldo + ";" + //6. Остаток/##CHR(13)##//##CHR(10)##/ ";" + //7. Не используется/##CHR(13)##//##CHR(10)##/ mFlags + ";" + //8. флаги контроля/##CHR(13)##//##CHR(10)##/ mMin_cena + ";" + //9. Минимальная цена/##CHR(13)##//##CHR(10)##/ mStore_period + ";" + //10. Не используется/##CHR(13)##//##CHR(10)##/ mAspect_sch + ";" + //11. Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_var + ";" + //12. Вариант использования разрезов/##CHR(13)##//##CHR(10)##/ rsubject + ";" + //13. Признак предмета расчета/##CHR(13)##//##CHR(10)##/ ";" + //14. Коэффициент штрихкода/##CHR(13)##//##CHR(10)##/ ";" + //15. Не используется/##CHR(13)##//##CHR(10)##/ mParent + ";" + //16. Код родительской группы/##CHR(13)##//##CHR(10)##/ "1" + ";" + //17. Товар или группа: для товара 1, для группы 0/##CHR(13)##//##CHR(10)##/ ";" + //18. Не используется/##CHR(13)##//##CHR(10)##/ "0" + ";" + //19. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //20. Серия/##CHR(13)##//##CHR(10)##/ ";" + //21. Сертификат/##CHR(13)##//##CHR(10)##/ mFr_code + ";" + //22. Не используется/##CHR(13)##//##CHR(10)##/ mKodn + ";" + //23. Код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. Не используется/##CHR(13)##//##CHR(10)##/ mPlu + ";" + //25. Не используется/##CHR(13)##//##CHR(10)##/ mArticle + ";" + //26. Артикул/##CHR(13)##//##CHR(10)##/ mVtype + ";" + //27. Не используется/##CHR(13)##//##CHR(10)##/ mDsc_value + ";" + //28. Не используется/##CHR(13)##//##CHR(10)##/ mActionPriz + ";" + //29. Максимальная скидка, %/##CHR(13)##//##CHR(10)##/ mCheckPrinter + ";" + //30. Не используется/##CHR(13)##//##CHR(10)##/ mImage_path +";" + //31. Имя файла с картинкой формата PNG, BMP, JPEG, GIF, TIFF, ICO и путь к нему/##CHR(13)##//##CHR(10)##/ mNote + ";" + //32. Описание/##CHR(13)##//##CHR(10)##/ ";" + //33. Кратность количества/##CHR(13)##//##CHR(10)##/ "0" + ";" + //34. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //35. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //36. Не используется/##CHR(13)##//##CHR(10)##/ mKkm_section + ";" + //37. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //38. Не используется/##CHR(13)##//##CHR(10)##/ kodGrPintChek + ";" + //39. Код ГП товара/##CHR(13)##//##CHR(10)##/ kodGrPintCopy + ";" + //40. Код ГП копии товара/##CHR(13)##//##CHR(10)##/ ";" + //41. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //42. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //43. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //44. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //45. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //46. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //47. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //48. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //49. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //50. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //51. Не используется/##CHR(13)##//##CHR(10)##/ mF_marknotrequire + ";"; //52. Значение флага «Без ввода ШК маркировки»/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( mAlco OR ПивнаяПродукция )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += mNNVid + ";" + //53. Код вида продукции/##CHR(13)##//##CHR(10)##/ mVolume + ";" + //54. Емкость тары, л./##CHR(13)##//##CHR(10)##/ mMarkGroup + ";" + //55. Тип номенклатуры/##CHR(13)##//##CHR(10)##/ ЕСЛИ( ПивнаяПродукция, "1", "0" ) + ";" + //56. Маркировка алкогольной продукции/##CHR(13)##//##CHR(10)##/ mAProc + ";"; //57. Крепость алкогольной продукции/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += ";" + //53. Код вида продукции/##CHR(13)##//##CHR(10)##/ ";" + //54. Емкость тары, л./##CHR(13)##//##CHR(10)##/ mMarkGroup + ";" + //55. Тип номенклатуры/##CHR(13)##//##CHR(10)##/ ";" + //56. Маркировка алкогольной продукции/##CHR(13)##//##CHR(10)##/ ";"; //57. Крепость алкогольной продукции/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка += mPaytype + ";" + //58. Признак способа расчета/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !ПУСТО(mAgentDetailsCode), mAgentDetailsCode, "" ) + ";" + //59. Код реквизитов агента/##CHR(13)##//##CHR(10)##/ ";" + //60. Сумма акциза, включенная в стоимость товара/##CHR(13)##//##CHR(10)##/ ";" + //61. Код страны происхождения товара (допустимы только цифры)/##CHR(13)##//##CHR(10)##/ ";" + //62. Номер таможенной декларации/##CHR(13)##//##CHR(10)##/ ";" + //63. Наименование лотереи/##CHR(13)##//##CHR(10)##/ ";" + //64. Код вида номенклатурной классификации (EAN-13)/##CHR(13)##//##CHR(10)##/ ";" + //65. Проверка соответствия товара штрихкоду маркировки: 0 – по штрихкодам товара; 1 – по штрихкоду регистрации./##CHR(13)##//##CHR(10)##/ mffdcode; //66. Мера количества предмета расчета/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Отмечаем в таблице штриховых кодов, что товар был выгружен/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ШТРИХКОДЫ + " SET used= 1 WHERE code= ''" + code + "''" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ("СписокТоваров");/##CHR(13)##//##CHR(10)##/ИНДИКАТОР();/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ();/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',212.00000000,'/##CHR(13)##//##CHR(10)##///Выгрузка остатков по разрезам в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем команду - либо заменить (обновить) информацию о разрезах, либо добавить/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEASPECTREMAINSWITHOUTSALE", "$$$ADDASPECTREMAINS" ) );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT t1.code AS subcode, t1.nngroup, t1.aspect, t1.kolp, t1.cena, t2.code /##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " t2 ON t1.subcode = t2.nn /##CHR(13)##//##CHR(10)##/ WHERE t1.f_subres = 1 AND t1.nngroup <> '''' AND t1.cena >" + IIF( !ТОВАРЫБЕЗЦЕНЫ, "", "=" ) + " 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоваров.nngroup + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ aspectList = "";/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ aspectValue = ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоваров.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ // Для тех разрезов, для которых нет значения для данного товара, проставляем специальное значение 999999999/##CHR(13)##//##CHR(10)##/ aspectList = aspectList + IIF( !EMPTY( aspectList ), ",", "" ) + ЕСЛИ( aspectValue == "0", "999999999", aspectValue ); /##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ // Если удалось собрать список кодов - формируем строку в файле/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( aspectList ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Строка в формате АТОЛ/##CHR(13)##//##CHR(10)##/ // остаток только если Признак загрузки остатков не равен "не надо загружать"/##CHR(13)##//##CHR(10)##/ Строка = code + ";" + IIF( saldotype <> 0,STR( kolp, 10, 3 ), "0") + ";" + /##CHR(13)##//##CHR(10)##/ aspectList + ";" + ALLTRIM( STR( cena, 8, 2 ) ) + ";;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // Записываем в таблицу штриховых кодов, список разрезов /##CHR(13)##//##CHR(10)##/ ЗАПРОС("UPDATE " + ШТРИХКОДЫ + " SET aspectlist= ''" + aspectList + "'', used= 1, code = ''"+code+"'' WHERE code= ''" + subcode + "''");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',213.00000000,'//Выгрузка штриховых кодов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Штриховые коды идут в конце файла, после всех товаров /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDBARCODES" );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT koef, barcode, code, aspectlist FROM " + ШТРИХКОДЫ + " /##CHR(13)##//##CHR(10)##/ WHERE used = 1 AND barcode <> '''' ", "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокШтрихКодов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( barcode ) + ";" + ALLTRIM( code ) + ";" + ALLTRIM( aspectlist ) + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ, ALLTRIM( STRTRAN( koef, ",", ALLTRIM( delimiter ) ) ), "1" ) + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',214.00000000,'//Завершение выгрузки товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если надо, то выгружаем алкокоды/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгрузка алкокодов /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDALCCODES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT sprnn.maincode, sprnn.nnvid, sprnn.ed, egais.alcocode,/##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprres.nnvid ) AS alcotype,/##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON sprnn.maincode = t1.code/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_egais egais ON egais.code = sprnn.nn/##CHR(13)##//##CHR(10)##/ WHERE egais.alcocode <> ''''", "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ // Если продукция разливная, то алкокод связываем со второй карточкой, которая для вскрытия тары/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАлкокодов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокАлкокодов.alcotype ) == 1 AND !ВСПИСКЕ( СписокАлкокодов.nnvid, "481" ); /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, СписокАлкокодов.maincode + ";" + СписокАлкокодов.alcocode );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Теперь просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/ОЖИДАНИЕ( 5000 );/##CHR(13)##//##CHR(10)##/ФайлФлаг = ФайлСоздать( path_flag_out );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ФайлФлаг, "");/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ФайлФлаг );/##CHR(13)##//##CHR(10)##/*//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',216.00000000,'//Начало выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления различных объектов, если установлены галочки/##CHR(13)##//##CHR(10)##/// Схемы внутренних автоматических скидок/##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИСХЕМ AND !f_rmk ) ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',217.00000000,'//Выгрузка схем скидок в ККМ./##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/// Схемами скидок являются папки в справочнике скидок, поэтому/##CHR(13)##//##CHR(10)##/// выбираем данные из временной таблицы с папками скидок/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + ПАПКИСКИДОК, "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления схем скидок/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDAUTODISCSCHMS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ПапкиСкидок" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, STR( ic + 1000000000 ) + ";" + LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 ) + ";" + /##CHR(13)##//##CHR(10)##/ IIF( union_type > 0, ALLTRIM( STR( union_type - 1) ), "" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ПапкиСкидок" );*//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',218.00000000,'//Выгрузка папок скидок в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками скидок/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + ПАПКИСКИДОК, "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDDISCRATES" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "ПапкиСкидок" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, STR( ic + 1000000000 ) + ";" + LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/// LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 ) + ";" + /##CHR(13)##//##CHR(10)##/// IIF( parent == 0, "0", ALLTRIM( STR( ABS( parent ) + 1000000000 ) )) + ";1;" +/##CHR(13)##//##CHR(10)##/// IIF( union_type > 0, ALLTRIM( STR( union_type - 1) ), "" ) + ";;;;;;;" );/##CHR(13)##//##CHR(10)##////##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',219.00000000,'//Выгрузка скидок в ККМ. В CE не используется/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы со скидок/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + СКИДКИ, "СписокСкидок" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокСкидок" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDDISCRATES" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокСкидок" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mParent = ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/// mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1) ), "" );/##CHR(13)##//##CHR(10)##/// mUnion_type = ALLTRIM( STR( union_type ) );/##CHR(13)##//##CHR(10)##/// mF_auto = IIF( f_auto, "2", "1" );/##CHR(13)##//##CHR(10)##/// mVmin_exists = IIF( !EMPTY( value_min ), "1", "0" );/##CHR(13)##//##CHR(10)##/// mVmax_exists = IIF( !EMPTY( value_max ), "1", "0" );/##CHR(13)##//##CHR(10)##/// mValue_min = ALLTRIM( LEFT( STRTRAN( value_min, ";", " " ), 100 ) );/##CHR(13)##//##CHR(10)##/// mValue_max = ALLTRIM( LEFT( STRTRAN( value_max, ";", " " ), 100 ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/// mDsc_value = Вычислить( mValue );/##CHR(13)##//##CHR(10)##/// ELSE/##CHR(13)##//##CHR(10)##/// mDsc_value = mValue;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Строка = code + ";" + mName + ";" + mCtext + ";" + mParent + ";0;" + mUnion_type + ";" +/##CHR(13)##//##CHR(10)##/// mVtype + ";" + mDsc_value + ";" + mF_auto + ";" + mType_ + ";" + mVmin_exists + ";" + /##CHR(13)##//##CHR(10)##/// mValue_min + ";" + mVmax_exists + ";" + mValue_min;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокСкидок" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',220.00000000,'//Выгрузка условий скидок в ККМ./##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками скидок/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + УСЛОВИЯ, "СписокУсловий" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокУсловий" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDAUTODISCCONDS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокУсловий" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( EMPTY( parent ),0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( mValue );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = mValue;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mStart_date = "";/##CHR(13)##//##CHR(10)##/ mEnd_date = "";/##CHR(13)##//##CHR(10)##/ mCdate_day = cdate_day;/##CHR(13)##//##CHR(10)##/ mCdate_month = cdate_month;/##CHR(13)##//##CHR(10)##/ mCdate_code = cdate_code;/##CHR(13)##//##CHR(10)##/ mCdate_day2 = 0;/##CHR(13)##//##CHR(10)##/ mCdate_month2 = 0;/##CHR(13)##//##CHR(10)##/ IF ( ТИП( "cdate_month2" ) != "U" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mCdate_day2 = cdate_day2;/##CHR(13)##//##CHR(10)##/ mCdate_month2 = cdate_month2;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 3 OR cdate_type == 4 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 3 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mCdate_day = ЗАПРОС( "SELECT day FROM sprholidays WHERE code= ''" + mСdate_code + "''" );/##CHR(13)##//##CHR(10)##/ mCdate_month = ЗАПРОС( "SELECT month FROM sprholidays WHERE code= ''" + mСdate_code + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Берем начальную дату из полей cdate_month, cdate_day/##CHR(13)##//##CHR(10)##/ mStart_date = DTOC( CTOD( ALLTRIM( STR( mCdate_day ) ) + "/" + ALLTRIM( STR( mCdate_month ) ) + "/" + ALLTRIM( STR( YEAR( DATE( ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 4 AND mCdate_day2 > 0 AND mCdate_month2 > 0 )/##CHR(13)##//##CHR(10)##/ mEnd_date = DTOC( CTOD( ALLTRIM( STR( mCdate_day2 ) ) + "/" + ALLTRIM( STR( mCdate_month2 ) ) + "/" + ALLTRIM( STR( YEAR( DATE( ) ) + ЕСЛИ( mCdate_month2 < mCdate_month, 1, 0 ) ) ) ) );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mEnd_date = DTOC( CTOD( ALLTRIM( STR( mCdate_day ) ) + "/" + ALLTRIM( STR( mCdate_month ) ) + "/" + ALLTRIM( STR( YEAR( DATE( ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ mTime_min = IIF( !EMPTY( time_min ), ALLTRIM( time_min ), "" );/##CHR(13)##//##CHR(10)##/ mTime_max = IIF( !EMPTY( time_max ), ALLTRIM( time_max ), "" );/##CHR(13)##//##CHR(10)##/ mWday_min = IIF( !EMPTY( wday_min ) OR !EMPTY( wday_max ), ALLTRIM( STR( wday_min - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mWday_max = IIF( !EMPTY( wday_min ) OR !EMPTY( wday_max ), ALLTRIM( STR( wday_max - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mKolp_min = IIF( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ), ALLTRIM( STR( kolp_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mKolp_max = IIF( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ), ALLTRIM( STR( kolp_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mSumma_min = IIF( !EMPTY( summa_min ) OR !EMPTY( summa_max ), ALLTRIM( STR( summa_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mSumma_max = IIF( !EMPTY( summa_min ) OR !EMPTY( summa_max ), ALLTRIM( STR( summa_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCsumma_min = IIF( !EMPTY( csumma_min ) OR !EMPTY( csumma_max ), ALLTRIM( STR( csumma_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCsumma_max = IIF( !EMPTY( csumma_min ) OR !EMPTY( csumma_max ), ALLTRIM( STR( csumma_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mPrefix_min = IIF( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ), prefix_min, "" );/##CHR(13)##//##CHR(10)##/ mPrefix_max = IIF( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ), prefix_max, "" );/##CHR(13)##//##CHR(10)##/ mCena_min = IIF( !EMPTY( cena_min ) OR !EMPTY( cena_max ), ALLTRIM( STR( cena_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCena_max = IIF( !EMPTY( cena_min ) OR !EMPTY( cena_max ), ALLTRIM( STR( cena_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCkolp_min = IIF( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ), ALLTRIM( STR( ckolp_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCkolp_max = IIF( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ), ALLTRIM( STR( ckolp_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mTmc_id = "";/##CHR(13)##//##CHR(10)##/ mTmckolp_min = "";/##CHR(13)##//##CHR(10)##/ mTmckolp_max = "";/##CHR(13)##//##CHR(10)##/ mTmcsumma_min = "";/##CHR(13)##//##CHR(10)##/ mTmcsumma_max = "";/##CHR(13)##//##CHR(10)##/ mCard_state = ALLTRIM( STR( card_state ) );/##CHR(13)##//##CHR(10)##/ mCardlen_min = "";/##CHR(13)##//##CHR(10)##/ mCardlen_max = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ Строка = mParent + ";" + mCode + ";" + mName + ";" + mCtext + ";" + mVtype + ";" + /##CHR(13)##//##CHR(10)##/ mDsc_value + ";" + mStart_date + ";" + mEnd_date + ";;" + mTime_min + ";" +/##CHR(13)##//##CHR(10)##/ mTime_max + ";;" + mWday_min + ";" + mWday_max + ";;" + mKolp_min + ";" +/##CHR(13)##//##CHR(10)##/ mKolp_max + ";;" + mSumma_min + ";" + mSumma_max + ";;" + mCsumma_min + ";" +/##CHR(13)##//##CHR(10)##/ mCsumma_max + ";;" + mPrefix_min + ";" + mPrefix_max + ";;" + mCena_min + ";" +/##CHR(13)##//##CHR(10)##/ mCena_max + ";;" + mCkolp_min + ";" + mCkolp_max + ";;;" + mTmckolp_min + ";" + /##CHR(13)##//##CHR(10)##/ mTmckolp_max + ";;" + mTmcsumma_min + ";" + mTmcsumma_max + ";;" + mCard_state + ";" +/##CHR(13)##//##CHR(10)##/ mCardlen_min + ";" + mCardlen_max + ";;" + mType_ + ";" + mCode;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокУсловий" );*//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',222.00000000,'//Выгрузка дисконтных карт в ККМ не используется в СЕ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы со списком карт/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + КАРТЫ, "СписокКарт" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт /##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCCARDDISCS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокКарт" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/// mParent = IIF( EMPTY( card_type ), "1", ALLTRIM( card_type ) );/##CHR(13)##//##CHR(10)##/// mState = IIF( block, "0", "1" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/// mCard_type = ALLTRIM( card_type );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Обороты по карте и количество посещений расчитываются системой перед началом выгрузки/##CHR(13)##//##CHR(10)##/// mCardSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/// mCardCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/// mDsc_value = Вычислить( mValue, "C" );/##CHR(13)##//##CHR(10)##/// ELSE/##CHR(13)##//##CHR(10)##/// mDsc_value = mValue;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// mCardn = cardn;/##CHR(13)##//##CHR(10)##/// mStart_date = IIF( EMPTY( str_date ), "", DTOC( str_date ) );/##CHR(13)##//##CHR(10)##/// mEnd_date = IIF( EMPTY( end_date ), "", DTOC( end_date ) );/##CHR(13)##//##CHR(10)##/ // Формируем строку для записи в файл/##CHR(13)##//##CHR(10)##/// Строка = mCode + ";" + mParent + ";" + mCardn + ";" + mStart_date + ";" + mEnd_date + ";" +/##CHR(13)##//##CHR(10)##/// mState + ";" + mVtype + ";" + mDsc_value + ";" + mType_ + ";;;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',223.00000000,'//Выгрузка папок клиентов в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками клиентов/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + ПАПКИКЛИЕНТОВ, "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "ПапкиКлиентов" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mParent = ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/// mCode = ALLTRIM( STR( ABS( ic ) + 1000000000 ) );/##CHR(13)##//##CHR(10)##/// mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1) ), "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если надо вычислять занчение скидки в момент выгрузки, то вычисляем его/##CHR(13)##//##CHR(10)##/// IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";1;;;;;;;;;;;;;;;;" + mDsc_value + ";" + mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',224.00000000,'//Выгрузка клиентов в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с клиентами/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + КЛИЕНТЫ, "СписокКлиентов" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокКлиентов" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/// mParent = ALLTRIM( STR( IIF( EMPTY( parent ),0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/// mSex = ALLTRIM( STR( sex ) );/##CHR(13)##//##CHR(10)##/// mZdate = "";/##CHR(13)##//##CHR(10)##/// mIndex = "";/##CHR(13)##//##CHR(10)##/// mCity = "";/##CHR(13)##//##CHR(10)##/// mWeb = "";/##CHR(13)##//##CHR(10)##/// mInn = "";/##CHR(13)##//##CHR(10)##/// mDoc = "";/##CHR(13)##//##CHR(10)##/// mOkpo = "";/##CHR(13)##//##CHR(10)##/// mOkpd = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Обороты и счетчики посещений уже расчитаны в системе до начала выгрузки/##CHR(13)##//##CHR(10)##/// mSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/// mCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mNote = LEFT( ALLTRIM( STRTRAN( note, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mTelephon = LEFT( ALLTRIM( STRTRAN( telefon, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mAddress = LEFT( ALLTRIM( STRTRAN( address, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mEmail = LEFT( ALLTRIM( STRTRAN( email, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mBirthdate = IIF( EMPTY( birthdate ), "", DTOC( birthdate ) );/##CHR(13)##//##CHR(10)##/// mRdate = DTOC( DATE( ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/// Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";0;" + mNote + ";" +/##CHR(13)##//##CHR(10)##/// mSex + ";" + mZdate + ";" + mBirthdate + ";" + mRdate + ";" + mIndex + ";" + /##CHR(13)##//##CHR(10)##/// mCity + ";" + mAddress + ";" + mEmail + ";" + mWeb + ";" + mTelephon + ";" +/##CHR(13)##//##CHR(10)##/// mInn + ";" + mDoc + ";" + mOkpo + ";" + mOkpd + ";" + mDsc_value + ";" + /##CHR(13)##//##CHR(10)##/// mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',225.00000000,'//Выгрузка дисконтных карт клиентов в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц КЛИЕНТЫ и КАРТЫ/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT cln.code AS clientcode, crd.code AS cardcode/##CHR(13)##//##CHR(10)##/// FROM " + КЛИЕНТЫ + " cln/##CHR(13)##//##CHR(10)##/// INNER JOIN " + КАРТЫ + " crd ON crd.client = cln.code", "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт клиентов/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTCCARDS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокКартКлиентов" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mClientCode = ALLTRIM( STR( VAL( clientcode ) ) );/##CHR(13)##//##CHR(10)##/// mCardCode = ALLTRIM( STR( VAL( cardcode ) ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/// Строка = mClientCode + ";1;" + mCardCode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',226.00000000,'//Выгрузка объектов скидок в ККМ. не используется в СЕ. Выгружаются Акции и мероприятия/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц ОБЪЕКТЫ и СКИДКИ И ТОВАРОВ/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT DISTINCT sprschem.code, sprschem.start_date, sprschem.end_date, sprschem.name, dsc.ctext, dsc.code AS discount/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON temp.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code", "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEMARKETINGACTIONSBYCODE" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокАкций.code );/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПерейтиВНачало( "СписокАкций" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокАкций.code + ";" + DTOC( СписокАкций.start_date ) + ";" + DTOC(СписокАкций.end_date ) +/##CHR(13)##//##CHR(10)##/ ";;;" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";1;0;1;1;" );/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПерейтиВНачало( "СписокАкций" );/##CHR(13)##//##CHR(10)##/НомерПоПорядку = 1;/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT obj.client_folder, obj.clientfolder_ic, obj.client, obj.card, obj.f_subres,/##CHR(13)##//##CHR(10)##/ obj.ware_folder, obj.warefolder_ic, obj.maincode, obj.discount, obj.aspect,/##CHR(13)##//##CHR(10)##/ ISNULL( dsc.f_condition, 0 ) AS f_condition, dsc.parent AS dsc_parent,/##CHR(13)##//##CHR(10)##/ ware.group_, dsc.card_state, obj.value, obj.f_evaluate/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN " + СКИДКИ + " dsc ON obj.discount = dsc.code/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN " + ТОВАРЫВОБЪЕКТАХ + " ware ON obj.nn = ware.code/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "''", "СписокОбъектов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/ Строка = "";/##CHR(13)##//##CHR(10)##/ Строка2 = "";/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокОбъектов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ IF ( ware_folder OR !ПУСТО( maincode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + IIF( ware_folder, ALLTRIM( STR( 1000000000 + warefolder_ic ) ), ALLTRIM( maincode ) );/##CHR(13)##//##CHR(10)##/ Строка2 += ЕСЛИ( !ПУСТО( Строка2 ), CHR( 149 ), "" ) + Процент;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокОбъектов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокОбъектов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, STR( НомерПоПорядку ) + ";" + СписокАкций.code + ";" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";2;" + Строка + ";;" + Строка2 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь записываем условия/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGCONDITIONS" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT * FROM specmdiscount WHERE code = ''" + СписокАкций.discount + "''", "Условие", 1 );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "Условие" );/##CHR(13)##//##CHR(10)##/ СписокУсловий = "";/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( summa_min ) OR !EMPTY( summa_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";1;>=;" + ALLTRIM( STR( summa_min, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";1;<=;" + ALLTRIM( STR( summa_max, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";2;>=;" + ALLTRIM( STR( kolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";2;<=;" + ALLTRIM( STR( kolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";3;>=;" + ALLTRIM( STR( ckolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";3;<=;" + ALLTRIM( STR( ckolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ) )/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";5;1;" + ALLTRIM( prefix_min ) + ";" + ALLTRIM( prefix_max ) + ";" + STR( LEN( ALLTRIM( prefix_min ) ) ) + ";" + STR( LEN( ALLTRIM( prefix_max ) ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( time_min ) OR !EMPTY( time_max ) )/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";6;" + ALLTRIM( time_min ) + ";" + ALLTRIM( time_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( wday_min ) OR !EMPTY( wday_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";7;";/##CHR(13)##//##CHR(10)##/ СписокДней = "";/##CHR(13)##//##CHR(10)##/ day = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( day <= 7 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( wday_min <= wday_max )/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min AND day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min OR day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ day++;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ СписокУсловий += СписокДней + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокУсловий ) )/##CHR(13)##//##CHR(10)##/ ФайлЗаписать( ДескрипторФайла, СписокУсловий );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ НомерПоПорядку++;/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',227.00000000,'//Завершение выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',228.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФайлФлаг = ФайлСоздать( path_flag_out );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ФайлФлаг, "");/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ФайлФлаг );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',229.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##/RETURN path_flag_out;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',230.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения количества созданных файлов с данными../##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое, равное количеству созданных файлов./##CHR(13)##//##CHR(10)##/RETURN 1;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',231.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##/RETURN path_out;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',232.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',235.00000000,'//Выгрузка пользователей в ККМ/##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( ФАЙЛ( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLUSERS" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник пользователей (из справочника работников)/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, chequetext, profile, password, ex_code FROM " + Пользователи, "СправочникПользователей"); /##CHR(13)##//##CHR(10)##/Выбратьконтекст( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDUSERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СправочникПользователей" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( chequetext ) + ";" + ALLTRIM( profile ) + ";" + STDE( password ) + ";" + STDE( ex_code ) + ";" );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/IF ( ВЫГРУЖАТЬСОТРУДНИКОВ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем справочник сотрудников (из справочника работников)/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT temp.code, temp.name, temp.chequetext, temp.profile, temp.password, temp.ex_code, /##CHR(13)##//##CHR(10)##/ dbo.fn_getchar_ex ( ''SPR'',''S06'', ''ФронтолСправочникСотрудниковПользователь'', sprempl.code, DEFAULT, DEFAULT, DEFAULT) AS empl/##CHR(13)##//##CHR(10)##/ FROM " + Пользователи + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprempl sprempl ON temp.code = sprempl.maincode", "СправочникСотрудников"); /##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDEMPLOYEES");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СправочникСотрудников" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( empl ) == 1 )/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + code + ";" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";;" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/}*//##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',240.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !РучнойОбмен )/##CHR(13)##//##CHR(10)##/{ /##CHR(13)##//##CHR(10)##/ //------- Создаем файл флага/##CHR(13)##//##CHR(10)##/ fileName = ALLTRIM( path_flag_in );/##CHR(13)##//##CHR(10)##/ fileHandle = ФайлСоздать( fileName );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Если не получилось создать файл - идем дальше не останавливаясь на данном ККМ/##CHR(13)##//##CHR(10)##/ IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось создать файл флага ''" + fileName + "'' для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- Записываем в него команды/##CHR(13)##//##CHR(10)##/ commands = "";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 1 )/##CHR(13)##//##CHR(10)##/ commands = "$$$NEWTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 2 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYDATETIMERANGE" + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ commands = commands + TTOC( НАЧАЛОПЕРИОДА ) + ";" + TTOC( КОНЕЦПЕРИОДА ) + ";";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 3 )/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYSESSIONSRANGE" + CHR(13) + CHR(10) + ПЕРВАЯСМЕНА + ";" + ПОСЛЕДНЯЯСМЕНА;/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 4 )/##CHR(13)##//##CHR(10)##/ commands = "$$$ALLTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 5 )/##CHR(13)##//##CHR(10)##/ commands = "$$$LASTSESSIONTRANSACTIONS";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Для ККМ ШТРИХ - команды не нужны/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( fileHandle, commands );/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',241.00000000,'/##CHR(13)##//##CHR(10)##///Проверка наличия данных для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае наличия данных для загрузки и ЛОЖЬ, в случае их отсутствия./##CHR(13)##//##CHR(10)##/// Проверяем наличие самих файлов и возможность чтения данных из них /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ЕстьФайлы = false;/##CHR(13)##//##CHR(10)##/ИмяФайла = ФайлНайти( СжатьПробелы( ИмяФайла ) );/##CHR(13)##//##CHR(10)##/ФайлЗакончитьПоиск( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Пытаемся открыть файл. Файл может существовать, но быть занят, /##CHR(13)##//##CHR(10)##/// например, он в процессе формирования, поэтому его не удасться загрузить/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( ИмяФайла ) AND ( РучнойОбмен OR !ФАЙЛ( ИмяФайлаФлага ) OR !EMPTY( exchangeservice_in ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла >= 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ЕстьФайлы = true;/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( ИмяФайла ) AND РучнойОбмен )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Для кассы """ + ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) + """ нет файлов для загрузки" );/##CHR(13)##//##CHR(10)##/ RETURN true;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕстьФайлы;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',242.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается в случае файлового обмена для определения количества файлов для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое равное количеству найденых файлов для загрузки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Необходимо посчитать сколько есть файлов для загрузки /##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КоличествоФайлов = ФайлСписок( СжатьПробелы( ИмяФайла ), "ИменаФайловДляЗагрузки");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN КоличествоФайлов;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',243.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ИменаФайловДляЗагрузки[ НомерФайла - 1 ];',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',244.00000000,'//Проверка возможности загрузки файла./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, проверку которого необходимо произвести./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения возможности загрузки указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной проверки. Если обработка возвращает ЛОЖЬ, то загрузка файла с данными не производится./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Возвращаем ИСТИНУ, если не стоит признак f_checkdone, иначе открываем файл и проверяем первый символ/##CHR(13)##//##CHR(10)##/checkResult = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьПризнакЗагрузки = ЕСЛИ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ, f_checkdone, ЗАПРОС("SELECT f_checkdone_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПроверятьПризнакЗагрузки )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Файл = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ checkResult = ФайлПрочитать( Файл, "S" ) == "#";/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( Файл );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN checkResult;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',246.00000000,'PUBLIC ИСТОЧНИКДАТЫ, ДЕЛИТЬПОККМ, ДЕЛИТЬПОКС, СКЛАДЫИЗГРУПП, ФИРМЫИЗГРУПП, СПИСОКФР, ККМ_КОДОБОРУДОВАНИЯ,/##CHR(13)##//##CHR(10)##/КОДФРОНТ2, КОДФРОНТ3, КОДФРОНТ4, КОДФРОНТ5, КОДФРОНТ6;/##CHR(13)##//##CHR(10)##///Загрузка данных./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, загрузку которого необходимо произвести. Данный параметр передается только при файловом обмене./##CHR(13)##//##CHR(10)##///Обработка вызывается для загрузки данных./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной загрузки. иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ЗАГРУЖАТЬЧЕКИ = ПЕРЕМЕННАЯ("_ФРОНТОЛ_ЗАГРУЖАТЬЧЕКИ", false);/##CHR(13)##//##CHR(10)##/IF ( ЗАГРУЖАТЬЧЕКИ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ККМ_КОДОБОРУДОВАНИЯ = КОДОБОРУДОВАНИЯ;/##CHR(13)##//##CHR(10)##/ IF ( !EQUIPMENT.ККМ_ЗагрузитьТранзакцииВЧеки( ККМ_КОДОБОРУДОВАНИЯ, ИмяФайла, sklad ) )/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ("Произошла ошибка при загрузке чеков из Фронтол", "Загрузка чеков из Фронтол");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //загружаем ДКС из чеков/##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТЫИЗЧЕКОВ", false ) AND !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ RETURN Сервис.РМКСоздатьДокументы( "", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТПРИАВТОМАТИЧЕСКОЙЗАГРУЗКЕ", true ) AND АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Индикатор( );/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ RETURN true; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА = ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ТИПДОКУМЕНТАТОЛЬКОПОФОРМЕОБМЕНА", false );/##CHR(13)##//##CHR(10)##/ИМЯОБОРУДОВАНИЯ = ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( "Обработка ККМ """ + ИМЯОБОРУДОВАНИЯ + """. Файл " + ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/fileHandle = ФайлОткрыть( ИмяФайла, 0, 1 );/##CHR(13)##//##CHR(10)##/kkmsklad = sklad;/##CHR(13)##//##CHR(10)##/firm = "";/##CHR(13)##//##CHR(10)##/processCount = 0;/##CHR(13)##//##CHR(10)##/итого = 0.00;/##CHR(13)##//##CHR(10)##///------ Не удалось открыть файл - выходим/##CHR(13)##//##CHR(10)##/IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось открыть файл ''" + ИмяФайла + "'' загрузки для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///------ Первые три строки - заголовок файла, он нам не интересен /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( fileHandle, "@" );/##CHR(13)##//##CHR(10)##/ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##/ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок = ФайлКоличествоСтрок( fileHandle );/##CHR(13)##//##CHR(10)##/ДобавитьСообщение( "Количество строк в файле: " + КоличествоСтрок );/##CHR(13)##//##CHR(10)##/Индикатор( "Загрузка данных", КоличествоСтрок );/##CHR(13)##//##CHR(10)##/КоличествоСтрок = 0;/##CHR(13)##//##CHR(10)##/tranzDate = ""; // Дата транзакции/##CHR(13)##//##CHR(10)##/tranzTime = ""; // Время транзакции/##CHR(13)##//##CHR(10)##/foundTranz = false; // Признак того, что нашли транзакции/##CHR(13)##//##CHR(10)##/client = ""; // Код клиента из чека/##CHR(13)##//##CHR(10)##/maxTranzCount = 0; // Будем хранить максимальный номер транзакции/##CHR(13)##//##CHR(10)##/identif = 0;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем контекст со списком ФР и юридическими лицами, которые привязаны к ФР/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT fr_code, firm FROM " + СПИСОКФР, "СписокФР" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьКОДФР = !ПУСТО( ЗАПРОС( "SELECT ex_code + fr_list FROM sprequipment WHERE code = ''" + КодОборудования + "''" ) );/##CHR(13)##//##CHR(10)##/ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП = ЗАПРОС( "SELECT f_sklfromwaregrp FROM sprequipment WHERE code = ''" + КодОборудования + "''" );/##CHR(13)##//##CHR(10)##/БРАТЬСКЛАДЫИЗГРУПП = СКЛАДЫИЗГРУПП OR ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/БылиТранзакцииПоФРВыбранномуВТО = FALSE;/##CHR(13)##//##CHR(10)##/tranzDateKeg = "";/##CHR(13)##//##CHR(10)##/tranzTimeKeg = "";/##CHR(13)##//##CHR(10)##/WHILE ( !ФайлКонецФайла( fileHandle ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, "Обработано строк" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ string = ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##/ //------ Если строка пустая - пропускаем ее/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( string ) ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Для соответствия номеров полей возвращаемым номерам слов - добавляем разделитель /##CHR(13)##//##CHR(10)##/ string = ";" + string;/##CHR(13)##//##CHR(10)##/ tranzCount = GetWord( string, ";", ";", 1 );/##CHR(13)##//##CHR(10)##/ tranzDate = GetWord( string, ";", ";", 2 );/##CHR(13)##//##CHR(10)##/ tranzTime = GetWord( string, ";", ";", 3 );/##CHR(13)##//##CHR(10)##/ tranzType = GetWord( string, ";", ";", 4 );/##CHR(13)##//##CHR(10)##/ POSNumber = VAL( GetWord( string, ";", ";", 5 ) );/##CHR(13)##//##CHR(10)##/ chequeNumber = GetWord( string, ";", ";", 6 );/##CHR(13)##//##CHR(10)##/ Seller = STR( VAL( GetWord( string, ";", ";", 7 ) ) );/##CHR(13)##//##CHR(10)##/ wareCode = GetWord( string, ";", ";", 8 );/##CHR(13)##//##CHR(10)##/ AspectsList = GetWord( string, ";", ";", 9 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ AspectValue1 = GetWord( "," + AspectsList, ",", 1 );/##CHR(13)##//##CHR(10)##/ AspectValue2 = GetWord( "," + AspectsList, ",", 2 );/##CHR(13)##//##CHR(10)##/ AspectValue3 = GetWord( "," + AspectsList, ",", 3 );/##CHR(13)##//##CHR(10)##/ AspectValue4 = GetWord( "," + AspectsList, ",", 4 );/##CHR(13)##//##CHR(10)##/ AspectValue5 = GetWord( "," + AspectsList, ",", 5 );/##CHR(13)##//##CHR(10)##/ Price = STRTRAN( GetWord( string, ";", 10 ), ",","." );/##CHR(13)##//##CHR(10)##/ Quantity = STRTRAN( GetWord( string, ";", 11 ), ",","." );/##CHR(13)##//##CHR(10)##/ chequeType = STR( VAL( GetWord( string, ";", 13 ) ) );/##CHR(13)##//##CHR(10)##/ ecrSession = GetWord( string, ";", 14 );/##CHR(13)##//##CHR(10)##/ PriceWD = STRTRAN( GetWord( string, ";", 15 ), ",","." );/##CHR(13)##//##CHR(10)##/ SummWD = STRTRAN( GetWord( string, ";", 16 ), ",","." );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ecrNumber = ALLTRIM( STR( VAL( GetWord( string, ";", 17 ) ) ) );/##CHR(13)##//##CHR(10)##/ wareMark = STRTRAN( GetWord( string, ";", 18 ), CHR(164), ";" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ sgtin = ALLTRIM( STRTRAN( GetWord( string, ";", 33 ), CHR(164), ";" ) );/##CHR(13)##//##CHR(10)##/ РазделительМарок = "¤"; //символ разделитель марок, который ожидается программой для случаев, когда в одной регистрации несколько марок с разделителем/##CHR(13)##//##CHR(10)##/ exmark = STRTRAN( GETWORD( string, ";", 34 ), ",", РазделительМарок );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ barcode = ЕСЛИ( !ПУСТО( exmark ), exmark, GetWord( string, ";", 19 ) );/##CHR(13)##//##CHR(10)##/ Summ = STRTRAN( GetWord( string, ";", 20 ), ",","." );/##CHR(13)##//##CHR(10)##/ currency = GetWord( string, ";", 21 );/##CHR(13)##//##CHR(10)##/ education = ЕСЛИ( !ПУСТО( VAL( GetWord( string, ";", 22 ) ) ), 1, 0 );/##CHR(13)##//##CHR(10)##/ dockIndCode = GetWord( string, ";", 23 );/##CHR(13)##//##CHR(10)##/ commentCode = GetWord( string, ";", 24 );/##CHR(13)##//##CHR(10)##/ universalNDOK = GetWord( string, ";", 26 );/##CHR(13)##//##CHR(10)##/ karta = "";/##CHR(13)##//##CHR(10)##/ documentClient = "";/##CHR(13)##//##CHR(10)##/ manager = GetWord( string, ";", 28 );/##CHR(13)##//##CHR(10)##/ warecode_org = warecode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( INLIST( VAL( tranzType ), 5, 15, 6, 16, 7, 17, 8, 18, 75, 85, 76, 86, 77, 87, 78, 88, 35, 36, /##CHR(13)##//##CHR(10)##/ 37, 38, 40, 42, 55, 56, 57, 49, 45, 41, 43, 44 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Заменяем служебный символ на точку с запято/##CHR(13)##//##CHR(10)##/ karta = STRTRAN( warecode, CHR( 164 ), ";" );/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//* IF ( СЖАТЬПРОБЕЛЫ( СТРОКА( ЧИСЛО( warecode ) ) ) <> СЖАТЬПРОБЕЛЫ( warecode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }*//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------Если операция открытия чека/##CHR(13)##//##CHR(10)##/ IF ( VAL( tranzType ) == 42 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //для постановки на кран запомним дату и время начала формирования операции, /##CHR(13)##//##CHR(10)##/ //т.к. xPOS3 не всегда возвращает дату и время для 11 транзакции в 27й операции/##CHR(13)##//##CHR(10)##/ IF ( VAL( chequeType ) == 27 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ tranzDateKeg = GetWord( string, ";", ";", 2 );/##CHR(13)##//##CHR(10)##/ tranzTimeKeg = GetWord( string, ";", ";", 3 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Если операция закрытие чека/##CHR(13)##//##CHR(10)##/ IF ( VAL( tranzType ) == 55 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ SummWD = STRTRAN( GetWord( string, ";", 12 ), ",","." );/##CHR(13)##//##CHR(10)##/ documentClient = priceWD;/##CHR(13)##//##CHR(10)##/ priceWD = "";/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) AND VAL( documentClient ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE code = (SELECT card FROM sprmclient WHERE dbo.fn_chartoint( code ) = " + STR( VAL( documentClient ) ) + ")" );/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) )/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE client = " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Если транзакцию с полученным номером уже обрабатывали, то пропускаем строку/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT CASE WHEN EXISTS(SELECT * FROM "+ ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE id = " + STR( VAL( tranzCount ) ) + " AND posnumber = " + STR( posNumber ) +") /##CHR(13)##//##CHR(10)##/ THEN 1 ELSE 0 END " ) == 1 ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Определяем, входит ли текущий ФР в список обрабатываемых ФР/##CHR(13)##//##CHR(10)##/ IF ( ПроверятьКОДФР AND !Найти( "СписокФР", "СписокФР.fr_code == ''" + UPPER( ALLTRIM( ecrNumber ) ) + "''" ) ) CONTINUE;/##CHR(13)##//##CHR(10)##/ БылиТранзакцииПоФРВыбранномуВТО = TRUE;/##CHR(13)##//##CHR(10)##/ //-------- Запоминаем /##CHR(13)##//##CHR(10)##/ firm = СписокФР.firm;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Если транзакцию с полученным номером уже обрабатывали, то пропускаем строку/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT CASE WHEN EXISTS(SELECT * FROM "+ ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE id = " + STR( VAL( tranzCount ) ) + " AND posnumber = " + STR( posNumber ) +") /##CHR(13)##//##CHR(10)##/ THEN 1 ELSE 0 END " ) == 1 ) CONTINUE;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ tranzCount = VAL( tranzCount );/##CHR(13)##//##CHR(10)##/ maxTranzCount = MAX( maxTranzCount, tranzCount );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ docCode = "";/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ nn = warecode;/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ kolp = VAL( Quantity );/##CHR(13)##//##CHR(10)##/ summasale = VAL( SummWD );/##CHR(13)##//##CHR(10)##/ summa = VAL( Summ );/##CHR(13)##//##CHR(10)##/ cena = VAL( Price );/##CHR(13)##//##CHR(10)##/ nnname = "";/##CHR(13)##//##CHR(10)##/ ed = "";/##CHR(13)##//##CHR(10)##/ kodn = "";/##CHR(13)##//##CHR(10)##/ client = "";/##CHR(13)##//##CHR(10)##/ summabn = 0.00;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Анализируем тип транзакции и в зависимости от него выполняем разные действия/##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие смены. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ //------- Операция - Z-отчет. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ IF ( ( tranzType == "61" AND ИСТОЧНИКДАТЫ == 3 ) OR ( tranzType == "63" AND ИСТОЧНИКДАТЫ == 4 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ IF ( ИСТОЧНИКДАТЫ == 3 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND fr_code= " + ecrNumber );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие чека. Проставляем код клиента./##CHR(13)##//##CHR(10)##/ IF ( tranzType == "55" AND VAL( documentClient ) <> 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Определяем код клиента по доп. коду и проставляем его для всего чека./##CHR(13)##//##CHR(10)##/ client = ЗАПРОС( "SELECT code FROM sprclient WHERE dbo.fn_chartoint( ex_code )= " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET client = ''" + client + "'' WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Округления /##CHR(13)##//##CHR(10)##/ IF ( tranzType == "55" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Необходимо рассчитать процент скидки/##CHR(13)##//##CHR(10)##/ СуммаЧека = ЗАПРОС( "SELECT SUM( summasale ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE " + ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND ecrsession = " + STR( VAL( ecrSession ) ) + " AND transtype IN ( 1, 2, 11, 12 ) ");/##CHR(13)##//##CHR(10)##/ IF ( ABS( СуммаЧека ) > ABS( VAL( SummWD ) ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Пересчитываем суммы в чеке/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summasale = summasale - " + СТРОКА( СуммаЧека - VAL( SummWD ), 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = /##CHR(13)##//##CHR(10)##/ (SELECT MIN( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND " +/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND transtype IN ( 1, 2, 11, 12 ) )");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - отмена чека /##CHR(13)##//##CHR(10)##/ IF ( tranzType == "56" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если данные содержат уникальный номер документа, то помечаем на удаление чек по этому номеру./##CHR(13)##//##CHR(10)##/ // Иначе просто по номеру чека/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET f_deleted = 1 WHERE " + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- В транзакциях оплаты сумма записывается в поле 12/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "40" OR tranzType == "41" OR tranzType == "43" )/##CHR(13)##//##CHR(10)##/ Summa = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Безналичные оплаты/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "43" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( AspectsList ) > 1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Summabn = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##/ //------ Проставляем сумму безналичной оплаты у одной из записей о продаже/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summabn = summabn + " + STR( summabn, 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = (SELECT MAX( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 ) AND fr_code= " + ecrNumber + " )");/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ // Отмечаем особым образом транзакции для отображения в документе в виде без/нала /##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ("_ФРОНТОЛ_ДЕЛИТЬСТРОКИДКСПОВИДАМОПЛАТЫ", false ) )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET chequetype = " + VAL( aspectsList ) * 100 + " + chequetype WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 )"); /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- ПРОДАЖА/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCodePredefined = IIF( chequeType <> "6" AND chequeType <> "14" AND chequeType <> "15" AND chequeType <> "16", "008", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCode = IIF( !ПУСТО( docCodePredefined ), docCodePredefined, /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ2, dockIndCode ) > 0, "007", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ3, dockIndCode ) > 0, "001", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ4, dockIndCode ) > 0, "002", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ5, dockIndCode ) > 0, "003", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ6, dockIndCode ) > 0, "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''14'' OR chequeType == ''15'', "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''16'', "007", "008" ))))))));/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //инвентаризация/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ2 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ2, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "007"; /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //приходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ3 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ3, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "001";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //расходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ4 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ4, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "002";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //списание, оприходование/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ5 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ5, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "003";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //внутреннее перемещение/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ6 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ6, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "019";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если не определили по кодам документов, то ставим тип "ДКС"/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( docCode ) )/##CHR(13)##//##CHR(10)##/ docCode = "008";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем строки из документа, отличного от ДКС, то разделим их по номерам документов/##CHR(13)##//##CHR(10)##/ IF ( docCode <> "008" )/##CHR(13)##//##CHR(10)##/ docid = chequeNumber;/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ docid = 0;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ nnname = IIF( docCode <> "008", "Операция по свободной цене", "Свободная продажа");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Пытаемся сопоставить товар с выбранными разрезами/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Определяем код головного товара/##CHR(13)##//##CHR(10)##/ warecode = ЗАПРОС("SELECT code FROM sprres WHERE ISNULL(LTRIM(RTRIM(maincode)), '''')=''" + wareCode + "''");/##CHR(13)##//##CHR(10)##/ aspCond1 = IIF( !EMPTY( AspectValue1 ) AND AspectValue1 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 1 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue1 + ")", "");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ aspCond2 = IIF( !EMPTY( AspectValue2 ) AND AspectValue2 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 2 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue2 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond3 = IIF( !EMPTY( AspectValue3 ) AND AspectValue3 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 3 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue3 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond4 = IIF( !EMPTY( AspectValue4 ) AND AspectValue4 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 4 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue4 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond5 = IIF( !EMPTY( AspectValue5 ) AND AspectValue5 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 5 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue5 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ nn = ЗАПРОС("SELECT sprres.maincode /##CHR(13)##//##CHR(10)##/ FROM sprres /##CHR(13)##//##CHR(10)##/ WHERE sprres.subcode= ''" + warecode + "'' " + aspCond1 + aspCond2 + aspCond3 + aspCond4 + aspCond5);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ store_period = 0;/##CHR(13)##//##CHR(10)##/ //------ Если получилось установить код товара, то определяем остальные его параметры /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( nn ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем настоящий nn из sprnn по maincode/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT s.code, s.cat, s.name, s.ed, s.kodn, s.weight, s.d_litr, s.ed_weight, /##CHR(13)##//##CHR(10)##/ s.edd_litr, ISNULL( d.sklad, '''' ) AS sklad, ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprres s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.group_ = d.code /##CHR(13)##//##CHR(10)##/ WHERE ISNULL( LTRIM( RTRIM( maincode ) ), '''' ) = ''" + ALLTRIM( nn ) + "''", "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "001", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ s_code = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "002", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ weight_lab = IIF( !EMPTY( ТОВАРИНФО.weight ), ALLTRIM( STR( ТОВАРИНФО.weight, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.ed_weight), "" );/##CHR(13)##//##CHR(10)##/ volume_lab = IIF( !EMPTY( ТОВАРИНФО.d_litr), ALLTRIM( STR( ТОВАРИНФО.d_litr, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.edd_litr ), "" );/##CHR(13)##//##CHR(10)##/ weivol_lab = IIF( !EMPTY( weight_lab ), weight_lab, volume_lab );/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ) + IIF( !EMPTY( weivol_lab ), " " + weivol_lab, "" ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ТОВАРИНФО.ed;/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR ( !БРАТЬСКЛАДЫИЗГРУПП && !f_sklfromwaregrp ), sklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Если пытались разобрать разрезы и не нашли нужного товара/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем начальное значение имени и прочие реквизиты из заголовочного товара/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT s.name, s.ed, s.kodn, ISNULL( d.sklad, '''' ) AS sklad, /##CHR(13)##//##CHR(10)##/ ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprnn s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.nngroup = d.code /##CHR(13)##//##CHR(10)##/ WHERE nn = ''" + ALLTRIM( warecode ) + "''", "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = "";/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ТОВАРИНФО.ed;/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR ( !БРАТЬСКЛАДЫИЗГРУПП && !f_sklfromwaregrp ), sklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Пытаемся сформировать список разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT sprres_gdlist.f_num, spranalit.sprcode /##CHR(13)##//##CHR(10)##/ FROM sprnn /##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_gdlist ON sprnn.nngroup = sprres_gdlist.code /##CHR(13)##//##CHR(10)##/ INNER JOIN sprdim ON sprres_gdlist.d_code = sprdim.code /##CHR(13)##//##CHR(10)##/ INNER JOIN spranalit ON spranalit.code = SUBSTRING(sprdim.type_, 16, 3) /##CHR(13)##//##CHR(10)##/ WHERE sprnn.nn= ''" + warecode + "'' ", "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ // Проходим по списку разрезов и формируем название/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СПИСОКРАЗРЕЗОВ" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ aspcode = IIF( f_num == 1, AspectValue1, IIF( f_num == 2, AspectValue2, IIF( f_num == 3, AspectValue3, /##CHR(13)##//##CHR(10)##/ IIF( f_num == 4, AspectValue4, IIF( f_num == 5, AspectValue5, "0" ) ) ) ) );/##CHR(13)##//##CHR(10)##/ aspname = ЗАПРОС( "SELECT name FROM sprmain WHERE scode= ''" + СПИСОКРАЗРЕЗОВ.sprcode + "'' AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint( code )= " + STR( VAL( aspcode ) ) );/##CHR(13)##//##CHR(10)##/ nnname = ALLTRIM( nnname ) + '' / '' + ALLTRIM( aspname );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем постановку на кран, то необходимо сформировать документ для отправки в ЧЗ/##CHR(13)##//##CHR(10)##/ IF ( VAL( chequeType ) == 27 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //если в транзакциях 11 не указаны дата и время, то берем из транзакции открытия чека/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( tranzDate ) )/##CHR(13)##//##CHR(10)##/ tranzDate = tranzDateKeg;/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( tranzTime ) )/##CHR(13)##//##CHR(10)##/ tranzTime = tranzTimeKeg;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //проверим длину возвращаемого КМ (xPOS3 возвращает неполный КМ разливного пива)/##CHR(13)##//##CHR(10)##/ //если длина менее 25 символов, то дополним КМ требуемыми идентификаторами/##CHR(13)##//##CHR(10)##/ IF ( LEN( sgtin ) < 25 )/##CHR(13)##//##CHR(10)##/ sgtin = "01" + ПОДСТРОКА( sgtin, 1, 14 ) + "21" + ПОДСТРОКА( sgtin, 15, 7 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ КомментарийПостановки = "Касса """ + ALLTRIM( ИМЯОБОРУДОВАНИЯ ) + """ | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzCount ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzDate ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzTime ) + " | " + /##CHR(13)##//##CHR(10)##/ "док. № " + ALLTRIM( chequeNumber );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДатаВремяПостановки = CTOD( tranzDate + " " + tranzTime, 4 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( store_period ) )/##CHR(13)##//##CHR(10)##/ expirationDate = ДОБАВИТЬДНИ( ДатаВремяПостановки, store_period );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ expirationDate = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ __SQL()/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ --добавим документ постановки на кран/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF NOT EXISTS( SELECT TOP 1 * FROM mark_reciept_spec spec/##CHR(13)##//##CHR(10)##/ INNER JOIN mark_reciept mark ON mark.identity_column = spec.ic/##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' /##CHR(13)##//##CHR(10)##/ AND mark.action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND mark.note = ''[[ КомментарийПостановки ]]'' ) /##CHR(13)##//##CHR(10)##/ BEGIN/##CHR(13)##//##CHR(10)##/ EXEC sp_rmk_markdoc ''[[ firm ]]'', ''[[ nn ]]'', ''[[ КомментарийПостановки ]]'', ''[[ STDF( sgtin ) ]]'', [[ kolp ]], ''[[ TTOC( expirationDate ) ]]'', ''beer''/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ --установим дату для созданного документа из транзакций и установим склад/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ UPDATE mark_reciept/##CHR(13)##//##CHR(10)##/ SET date = ''[[ TTOC( ДатаВремяПостановки ) ]]'',/##CHR(13)##//##CHR(10)##/ sklad = ''[[ sklad ]]''/##CHR(13)##//##CHR(10)##/ WHERE identity_column = ( SELECT TOP 1 ic FROM mark_reciept_spec spec /##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' )/##CHR(13)##//##CHR(10)##/ AND action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND note = ''[[ КомментарийПостановки ]]''/##CHR(13)##//##CHR(10)##/ END /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SQLERROR/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Ошибка при записи документа ""Постановка на кран"" с номером " + /##CHR(13)##//##CHR(10)##/ chequeNumber + " от " + tranzDate + " " + tranzTime + CHR(13) + CHR(10) +/##CHR(13)##//##CHR(10)##/ "Описание ошибки: " + _ERRORDESCRIPTION, "Загрузка Постановки на кран" ); /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //обнуляем дату и время операции постановки на кран/##CHR(13)##//##CHR(10)##/ tranzDateKeg = "";/##CHR(13)##//##CHR(10)##/ tranzTimeKeg = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ sklad_d = "";/##CHR(13)##//##CHR(10)##/ // Теперь добавляем запись в таблицу ИМЯТАБЛИЦЫ/##CHR(13)##//##CHR(10)##/ IF ( docCode == "019" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ sklad_d = sklad;/##CHR(13)##//##CHR(10)##/ sklad = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем операцию постановки на кран (27) или снятия с крана (28), то пропускаем их загрузку в таблицу/##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( VAL( chequeType ), 27, 28 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь добавляем запись в таблицу ИМЯТАБЛИЦЫ/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "INSERT INTO " + ИМЯТАБЛИЦЫ + "(id, date, transtype, posnumber, doccode, seller, waremark, chequeNumber, chequetype, /##CHR(13)##//##CHR(10)##/ ecrsession, infostr, ecrnumber, ndok, docid, note, inouttype, nn, s_code, nnname, ed, /##CHR(13)##//##CHR(10)##/ kodn, client, contract, kolp, barcode, gtd, ksnum, summasale, summabn, summa, cena, /##CHR(13)##//##CHR(10)##/ firm, sklad, mol, sklad_d, mol_d, kskod, fr_code, manager, warecode, aspectvalue1 )/##CHR(13)##//##CHR(10)##/ VALUES ( /##CHR(13)##//##CHR(10)##/ " + STR( tranzCount ) + ", ''" + TTOC( date ) + "'', " + tranzType + ", " + STR( posNumber ) + ", ''" + doccode + "'',/##CHR(13)##//##CHR(10)##/ " + seller + ", ''" + STDF( wareMark, 250 ) + "'', " + chequeNumber + ", " + chequeType + ", " + STR( VAL( ecrSession ) ) + ", ''" + karta + "'',/##CHR(13)##//##CHR(10)##/ " + ecrNumber + ", ''" + universalNDOK + "'', 0, '''', '''', ''" + nn + "'', ''" + s_code + "'', ''" + STDF( nnname, 250 ) + "'',/##CHR(13)##//##CHR(10)##/ ''" + ed + "'', ''" + kodn + "'', ''" + client + "'', '''', " + STR( kolp, 16, 3 ) + ", ''" + STDF( barcode ) + "'', '''', /##CHR(13)##//##CHR(10)##/ " + STR( VAL( ecrSession ) ) + ", " + STR( summasale, 16, 3 ) + ", " + STR( summabn, 16 ,3 ) + ", " + STR( summa, 16 ,3 ) + ",/##CHR(13)##//##CHR(10)##/ " + STR( cena, 16 ,3 ) + ", ''" + firm + "'', ''" + sklad + "'', '''', '''', '''', ''" + kskod + "'', " + ecrNumber + ", ''" + manager + "'',/##CHR(13)##//##CHR(10)##/ ''" + warecode_org + "'', " + STR( VAL( AspectValue1 ) ) + " )" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ foundTranz = true;/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если указана конкретная дата для создания документов, то используем ее/##CHR(13)##//##CHR(10)##///IF ( ИСТОЧНИКДАТЫ == 2 )/##CHR(13)##//##CHR(10)##/// ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET date = ''" + TTOC( ДАТАДОКУМЕНТОВ ) + "''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///------- Если выбран вариант загрузки по дате закрытия смены, /##CHR(13)##//##CHR(10)##///------- и в списке транзакций остались транзакции без z_date, то /##CHR(13)##//##CHR(10)##///------- таким транзакциям проставляем текущую дату. Иначе, будет создано много документов/##CHR(13)##//##CHR(10)##/IF ( ИСТОЧНИКДАТЫ == 3 OR ИСТОЧНИКДАТЫ == 4 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( ДатаВремя( ) ) + "'' WHERE z_date= ''''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/Индикатор( );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Закрываем файл, удаляем последний контекст и убираем лишние окна/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокФР" );/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/// Ждем секунду, чтобы файл действительно закрылся. /##CHR(13)##//##CHR(10)##/Ожидание( 1000 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ФАЙЛУДАЛИТЬ( ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !БылиТранзакцииПоФРВыбранномуВТО ) MessageBox("В файле не обнаружены транзакции по ФР, указанным в карточке ТО");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',248.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_flag_in_alter = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "'' AND path_in_alter <> ''''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_flag_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = path_flag_in_alter;/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕСЛИ( !РучнойОбмен, ИмяФайлаФлага, "" );',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',249.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',270.00000000,'//Текст ошибки драйвера ККМ. /##CHR(13)##//##CHR(10)##///Обработка должна вернуть строку, содержащую описание последней возникшей ошибки при работе с ККМ./##CHR(13)##//##CHR(10)##/RETURN _ТЕКСТОШИБКИ;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',271.00000000,'//Последняя ошибка драйвера ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое - код последней ошибки драйвера ККМ./##CHR(13)##//##CHR(10)##/RETURN _КОДОШИБКИ;',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',272.00000000,'//Признак наличия ошибки ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если в результате выполнения последней операции с ККМ возникла ошибка. Иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN !EMPTY( _КОДОШИБКИ );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:23:07') #command INSERT INTO spreqprofiles (CODE,EX_CODE,NAME,TYPE,PORT,NOTE,PARENT,POSORDER,NOTAVAIL,MAINDB,MAINIC,CACCESS,TACCESS,FOLDER,RID,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('','','Обмен данными с Фронтол XPos 3','ККМ',0.00000000,'Профиль обмена с программным обеспечением Frontol xPOS 3.11.4 и выше. Совместим с Айтида, начиная с версии 4.5.0',0.00000000,7610.00000000,0,'',0.00000000,'','',0,'F3B27D46-ACAF-4809-86DE-0F9BC5975535',0,1,0,'04.04.2024 11:23:07') #begin #description Обмен данными с Фронтол XPos 3 (вскрытие тары) #name Обмен данными с Фронтол XPos 3 (вскрытие тары) #code 0000000431 #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',204.00000000,'//Начало выгрузки товаров в /##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) AND ПУСТО( exchangeservice_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLWARES" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Иначе подаем команды на удаление отдельных товаров/##CHR(13)##//##CHR(10)##/ IF ( saldotype <> 1 AND !СОХРАНЯТЬТОВАРЫ )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEWARESBYWARECODE" );/##CHR(13)##//##CHR(10)##/ // Достаем список выгружаемых товаров, проходим по нему и записываем команду удаления для каждого товара/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 ) /##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ + " WHERE f_subres = 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT code FROM " + ТОВАРЫ, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( f_nalogs )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем налоговые группы/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXRATES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name, proc_, ntype, ex_code FROM sprkodn WHERE proc_ <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ) + " ORDER BY proc_", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ НомерНалогаВККМ = ЕСЛИ( ПУСТО( СписокНалогов.ntype ), ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "4", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "05", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "2", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "06", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "3", СписокНалогов.ex_code ), /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокНалогов.ntype == "07", ЕСЛИ( ПУСТО( СписокНалогов.ex_code ), "1", СписокНалогов.ex_code ), "" ) ) ) );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) )+ ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";0;" + STR( СписокНалогов.proc_ ) + ";" + НомерНалогаВККМ );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT code, name FROM sprlistkodn ORDER BY code", "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPS" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + СписокНалогов.name + ";" + СписокНалогов.name + ";" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT list FROM speclistkodn WHERE code = ''" + СписокНалогов.code + "'' AND ( SELECT proc_ FROM sprkodn WHERE code= speclistkodn.list ) <> " + ЕСЛИ( ГОД( ДАТА( ) ) < 2019, "20", "18" ), "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDTAXGROUPRATES" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СоставНалогов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СписокНалогов.code ) ) + ";" + STR( VAL( СоставНалогов.list ) ) + ";0;" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СоставНалогов" );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокНалогов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокНалогов" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //очистка реквизитов агента при установке флага очистки ККМ перед загрузкой/##CHR(13)##//##CHR(10)##/ IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$DELETEALLAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ("SELECT code, name, inn, legal_adress, telefon, agent_type, agent_oper, agent_telephone_pa, agent_name_op, agent_inn_op, agent_address_op, agent_telephone_op, agent_telephone_pp/##CHR(13)##//##CHR(10)##/ FROM sprclient /##CHR(13)##//##CHR(10)##/ WHERE code IN (SELECT sprres.vendor FROM sprres sprres/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " temp ON temp.nn = sprres.code AND sprres.f_agentware = 1 )","ПоставщикиАгенты");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (КОЛИЧЕСТВОСТРОК("ПоставщикиАгенты") > 0)/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDAGENTDETAILS" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "ПоставщикиАгенты" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //формируем строку реквизитов, только обязательными для конкретного типа агента реквизитами для того чтобы правильно формировались тэги в чеке/##CHR(13)##//##CHR(10)##/ IF ( VAL(ПоставщикиАгенты.agent_type) == 0 OR VAL(ПоставщикиАгенты.agent_type) == 1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";;;;;" + LEFT( ПоставщикиАгенты.agent_telephone_pp , 100 ) + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 2 OR VAL(ПоставщикиАгенты.agent_type) == 3 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";" + /##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( ПоставщикиАгенты.agent_oper ), 24 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_pa, 100 ) + ";" + LEFT ( ПоставщикиАгенты.agent_name_op, 64 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT ( ПоставщикиАгенты.agent_inn_op, 10) + ";" + LEFT( ПоставщикиАгенты.agent_address_op , 256 ) + ";" + LEFT( ПоставщикиАгенты.agent_telephone_op , 100 ) + ";;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL(ПоставщикиАгенты.agent_type) == 4 OR VAL(ПоставщикиАгенты.agent_type) == 5 OR VAL(ПоставщикиАгенты.agent_type) == 6 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = STR(VAL(ПоставщикиАгенты.code)) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 100 ) + ";" + ПоставщикиАгенты.agent_type + ";;;;;;;;" +/##CHR(13)##//##CHR(10)##/ LEFT( ПоставщикиАгенты.telefon , 100 ) + ";" + LEFT( ALLTRIM( ПоставщикиАгенты.name ), 256 ) + ";" + LEFT ( ПоставщикиАгенты.inn, 10);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СтрокаПоставщика = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СтрокаПоставщика))/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СтрокаПоставщика );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ПоставщикиАгенты" ); /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',224.00000000,'//Выгрузка клиентов в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с клиентами/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + КЛИЕНТЫ, "СписокКлиентов" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокКлиентов" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/// mParent = ALLTRIM( STR( IIF( EMPTY( parent ),0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/// mSex = ALLTRIM( STR( sex ) );/##CHR(13)##//##CHR(10)##/// mZdate = "";/##CHR(13)##//##CHR(10)##/// mIndex = "";/##CHR(13)##//##CHR(10)##/// mCity = "";/##CHR(13)##//##CHR(10)##/// mWeb = "";/##CHR(13)##//##CHR(10)##/// mInn = "";/##CHR(13)##//##CHR(10)##/// mDoc = "";/##CHR(13)##//##CHR(10)##/// mOkpo = "";/##CHR(13)##//##CHR(10)##/// mOkpd = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Обороты и счетчики посещений уже расчитаны в системе до начала выгрузки/##CHR(13)##//##CHR(10)##/// mSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/// mCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mNote = LEFT( ALLTRIM( STRTRAN( note, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mTelephon = LEFT( ALLTRIM( STRTRAN( telefon, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mAddress = LEFT( ALLTRIM( STRTRAN( address, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mEmail = LEFT( ALLTRIM( STRTRAN( email, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mBirthdate = IIF( EMPTY( birthdate ), "", DTOC( birthdate ) );/##CHR(13)##//##CHR(10)##/// mRdate = DTOC( DATE( ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/// Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";0;" + mNote + ";" +/##CHR(13)##//##CHR(10)##/// mSex + ";" + mZdate + ";" + mBirthdate + ";" + mRdate + ";" + mIndex + ";" + /##CHR(13)##//##CHR(10)##/// mCity + ";" + mAddress + ";" + mEmail + ";" + mWeb + ";" + mTelephon + ";" +/##CHR(13)##//##CHR(10)##/// mInn + ";" + mDoc + ";" + mOkpo + ";" + mOkpd + ";" + mDsc_value + ";" + /##CHR(13)##//##CHR(10)##/// mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',229.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##/RETURN path_flag_out;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',240.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !РучнойОбмен )/##CHR(13)##//##CHR(10)##/{ /##CHR(13)##//##CHR(10)##/ //------- Создаем файл флага/##CHR(13)##//##CHR(10)##/ fileName = ALLTRIM( path_flag_in );/##CHR(13)##//##CHR(10)##/ fileHandle = ФайлСоздать( fileName );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Если не получилось создать файл - идем дальше не останавливаясь на данном ККМ/##CHR(13)##//##CHR(10)##/ IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось создать файл флага ''" + fileName + "'' для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- Записываем в него команды/##CHR(13)##//##CHR(10)##/ commands = "";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 1 )/##CHR(13)##//##CHR(10)##/ commands = "$$$NEWTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 2 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYDATETIMERANGE" + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ commands = commands + TTOC( НАЧАЛОПЕРИОДА ) + ";" + TTOC( КОНЕЦПЕРИОДА ) + ";";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 3 )/##CHR(13)##//##CHR(10)##/ commands = "$$$TRANSACTIONSBYSESSIONSRANGE" + CHR(13) + CHR(10) + ПЕРВАЯСМЕНА + ";" + ПОСЛЕДНЯЯСМЕНА;/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 4 )/##CHR(13)##//##CHR(10)##/ commands = "$$$ALLTRANSACTIONS";/##CHR(13)##//##CHR(10)##/ IF ( ПЕРИОДЗАГРУЗКИ == 5 )/##CHR(13)##//##CHR(10)##/ commands = "$$$LASTSESSIONTRANSACTIONS";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Для ККМ ШТРИХ - команды не нужны/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( fileHandle, commands );/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',205.00000000,'//Выгрузка папок товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Из временной таблицы достаем список папок товаров, сортируя его по родительской папке /##CHR(13)##//##CHR(10)##/КодСтруктурыТоваров = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S02'' ) " );/##CHR(13)##//##CHR(10)##/КодСтруктурыУслуг = ЗАПРОС( "SELECT dbo.fn_getsuitabletree( dbo.fn_getdefaultviewpoint( ), ''RPT'', ''SPR'', ''S05'' ) " );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст("SELECT name, ic, /##CHR(13)##//##CHR(10)##/ CASE WHEN parent IN (SELECT ic FROM spectree/##CHR(13)##//##CHR(10)##/ WHERE code IN ( ''" + КодСтруктурыТоваров + "'', ''" + КодСтруктурыУслуг + "'') AND /##CHR(13)##//##CHR(10)##/ folder= 1 AND parent= 0 ) THEN 0 ELSE parent END AS parent/##CHR(13)##//##CHR(10)##/ FROM (/##CHR(13)##//##CHR(10)##/ SELECT name, ic, parent, identity_column/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S02'', 0, ''" + КодСтруктурыТоваров + "'', 0 ) AS tmcfolders/##CHR(13)##//##CHR(10)##/ UNION SELECT name, ic, parent, identity_column + 100000000/##CHR(13)##//##CHR(10)##/ FROM dbo.fn_getfolders ( ''S05'', 0, ''" + КодСтруктурыУслуг + "'', 0 ) AS srvfolders/##CHR(13)##//##CHR(10)##/ ) AS folders/##CHR(13)##//##CHR(10)##/ WHERE ic IN ( SELECT ic FROM " + ПАПКИ + ")/##CHR(13)##//##CHR(10)##/ ORDER BY identity_column", "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( ABS( ic ) + IIF( ic < 0, 2000000000, 1000000000 ) ) ) + ";" + //1. идентификатор/##CHR(13)##//##CHR(10)##/ ";" + //2. /##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //3. наименование/##CHR(13)##//##CHR(10)##/ LEFT( STRTRAN( ALLTRIM( name ), ";", " "), 100) + ";" + //4. текст/##CHR(13)##//##CHR(10)##/ ";" + //5. /##CHR(13)##//##CHR(10)##/ ";" + //6. /##CHR(13)##//##CHR(10)##/ ";" + //7. не используется/##CHR(13)##//##CHR(10)##/ ";" + //8. /##CHR(13)##//##CHR(10)##/ "0.00" + ";" + //9. минимальная цена/##CHR(13)##//##CHR(10)##/ ";" + //10. /##CHR(13)##//##CHR(10)##/ "0" + ";" + //11. код схемы разрезов/##CHR(13)##//##CHR(10)##/ ";" + //12. /##CHR(13)##//##CHR(10)##/ ";" + //13. /##CHR(13)##//##CHR(10)##/ ";" + //14. /##CHR(13)##//##CHR(10)##/ ";" + //15. не используется/##CHR(13)##//##CHR(10)##/ ALLTRIM( STR( IIF( EMPTY( parent ), "", ABS( parent ) + IIF(ic < 0, 2000000000, 1000000000 ) ) ) ) + ";" + //16.код родительской группы/##CHR(13)##//##CHR(10)##/ "0" + ";" + //17. товар или группа. "0" для группы/##CHR(13)##//##CHR(10)##/ ";" + //18. /##CHR(13)##//##CHR(10)##/ ";" + //19. /##CHR(13)##//##CHR(10)##/ ";" + //20. /##CHR(13)##//##CHR(10)##/ ";" + //21. /##CHR(13)##//##CHR(10)##/ ";" + //22. /##CHR(13)##//##CHR(10)##/ ";" + //23. код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. /##CHR(13)##//##CHR(10)##/ ";" + //25. /##CHR(13)##//##CHR(10)##/ ";" + //26. артикул/##CHR(13)##//##CHR(10)##/ ";" + //27. тип скидки/##CHR(13)##//##CHR(10)##/ ";" + //28. значение скидки/##CHR(13)##//##CHR(10)##/ ";" + //29. максимальная скидка/##CHR(13)##//##CHR(10)##/ ";" + //30. /##CHR(13)##//##CHR(10)##/ ";" + //31. файл с картинкой/##CHR(13)##//##CHR(10)##/ ";" + //32. описание/##CHR(13)##//##CHR(10)##/ ";" + //33. /##CHR(13)##//##CHR(10)##/ ";" + //34. /##CHR(13)##//##CHR(10)##/ ";" + //35. /##CHR(13)##//##CHR(10)##/ ";" + //36. /##CHR(13)##//##CHR(10)##/ ";" + //37./##CHR(13)##//##CHR(10)##/ ";" + //38./##CHR(13)##//##CHR(10)##/ ";" + //39. код группы печати чека/##CHR(13)##//##CHR(10)##/ ";" + //40. код группы печати копии/##CHR(13)##//##CHR(10)##/ ";" + //41. код группы печати счета/##CHR(13)##//##CHR(10)##/ ";" + //42. код группы печати марки/##CHR(13)##//##CHR(10)##/ ";"; //43. код предприятия/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокПапок" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',206.00000000,'//Выгрузка разрезов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если в карточке оборудования стоит признак выгружать разрезы товаров, то выгружаем их/##CHR(13)##//##CHR(10)##/IF ( f_razr AND ( aspecttype == 2 OR aspecttype == 0) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем схемы разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, name FROM " + СХЕМЫРАЗРЕЗОВ, "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTSCHMS" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СхемыРазрезов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + LEFT( ALLTRIM( name ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( name ), 100 ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Теперь выгружаем сами разрезы/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTS" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ ПерейтиВНачало( );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, f_num, name FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE schemecode = ''" + СхемыРазрезов.schemecode + "''", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( schemecode ) ) ) + ";" + STR( f_num, 1 ) + ";" + mName + ";" + mName;/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // У использованых записей проставляем поле id, для того, чтобы корректно выгрузить значения разрезов/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + СОСТАВСХЕМРАЗРЕЗОВ + " SET id= " + STR( f_num ) + " WHERE schemecode= ''" + schemecode + "'' AND f_num= " + STR( f_num ) );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СхемыРазрезов" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Выгружаем значения разрезов/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDASPECTVALUES" );/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT schemecode, id, aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " WHERE id <> 0", "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Выгружаем список значений разрезов соответствующий текущей строке состава схемы/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode, valuecode, name FROM " + ЗНАЧЕНИЯРАЗРЕЗОВ + " WHERE aspectcode = ''" + СоставСхемы.aspectcode + "''", "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( name ), 100 );/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";" + STR( VAL( valuecode ) ) + ";" + mName + ";" + mName + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Для каждого разреза добавляем специальное "пустое" значение с кодом 999999999/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( STR( VAL( СоставСхемы.schemecode ) ) ) + ";" + STR( СоставСхемы.id, 1 ) + ";999999999;;;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ЗначенияРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СоставСхемы" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',230.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения количества созданных файлов с данными../##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое, равное количеству созданных файлов./##CHR(13)##//##CHR(10)##/RETURN 1;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',207.00000000,'//Подготовка к выгрузке товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Записываем команду добавления товаров/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEQUANTITYWITHOUTSALE", "$$$ADDQUANTITY" ) );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',208.00000000,'//Выгрузка всех товаров в ККМ./##CHR(13)##//##CHR(10)##/СтавкаБезНДС = ЗАПРОС( "SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM sprlistkodn /##CHR(13)##//##CHR(10)##/ WHERE code = ( SELECT TOP 1 code /##CHR(13)##//##CHR(10)##/ FROM speclistkodn /##CHR(13)##//##CHR(10)##/ WHERE list = ( SELECT TOP 1 code FROM/##CHR(13)##//##CHR(10)##/ sprkodn /##CHR(13)##//##CHR(10)##/ WHERE ntype = '''' ) )");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КодФирмыОборудования = ЗАПРОС("SELECT firm FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''");/##CHR(13)##//##CHR(10)##///если заполнена фирма в оборудовании, то определяем признак не плательщика НДС из выбранной фирмы/##CHR(13)##//##CHR(10)##///иначе берем выбранныю фирму в группе ресурсов/##CHR(13)##//##CHR(10)##/ЧастьЗапросаФирмаБезНДС = "";/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( КодФирмыОборудования ) )/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = ''" + КодФирмыОборудования + "'' ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = temp.firm ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///если в группе ресурсов не указана фирма, а указан код ФР и заполнен список фирм в оборудовании, то второй запрос поменять на/##CHR(13)##//##CHR(10)##///ЧастьЗапросаФирмаБезНДС = ", (SELECT TOP 1 fwonds FROM sprfirm WHERE code = (SELECT TOP 1 firm FROM " + СПИСОКФР + " WHERE fr_code = temp.nkkm ) ) AS firm_fwonds";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса = "";/##CHR(13)##//##CHR(10)##/ЧастьЗапросаРеквизитовАгента = "";/##CHR(13)##//##CHR(10)##/mAgentDetailsCode = "";/##CHR(13)##//##CHR(10)##/IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента = ", sprres.f_agentware AS sprres_f_agentware, sprres.vendor AS sprres_vendor "/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ("Подготовка к формированию файла выгрузки");/##CHR(13)##//##CHR(10)##/ТекстЗапроса = "SELECT temp.*, /##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnnname( sprres.code ) ELSE sprres.name END AS sprres_name,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_fullnncname( sprres.code ) ELSE sprres.shortname END AS sprres_shortname, /##CHR(13)##//##CHR(10)##/ sprres.nnvid AS sprres_nnvid, /##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprres.nnvid ) AS sprres_alcotype, /##CHR(13)##//##CHR(10)##/ ISNULL( (SELECT MAX( d_litr ) FROM sprres_egais WHERE code = sprres.code), 0 ) AS spregais_d_litr, /##CHR(13)##//##CHR(10)##/ sprres.d_litr AS sprres_d_litr, /##CHR(13)##//##CHR(10)##/ sprres.a_proc AS sprres_a_proc, /##CHR(13)##//##CHR(10)##/ sprres.ed AS sprres_ed, /##CHR(13)##//##CHR(10)##/ (SELECT ffdcode FROM spredn WHERE code = sprres.ed) AS ffdcode, /##CHR(13)##//##CHR(10)##/ (SELECT f_volume FROM spredn WHERE code = sprres.ed) AS ed_f_volume, /##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.rsubject, '''' ) AS spr_rsubject, /##CHR(13)##//##CHR(10)##/ ISNULL( sprres_g.paytype, '''' ) AS spr_paytype, /##CHR(13)##//##CHR(10)##/ sprres.f_make AS sprres_f_make, /##CHR(13)##//##CHR(10)##/ sprres.cat AS sprres_cat, /##CHR(13)##//##CHR(10)##/ sprres.markgroup AS sprres_markgroup, /##CHR(13)##//##CHR(10)##/ sprres.f_mark AS sprres_f_mark, /##CHR(13)##//##CHR(10)##/ sprres.f_marknotrequire AS sprres_f_marknotrequire, /##CHR(13)##//##CHR(10)##/ sprres.f_draft AS sprres_f_draft,/##CHR(13)##//##CHR(10)##/ sprres.gtin AS sprres_gtin, /##CHR(13)##//##CHR(10)##/ sprres.enterprice AS sprres_enterprice,/##CHR(13)##//##CHR(10)##/ ISNULL( dbo.fn_getint_ex(''SPR'', ''S02'', ''ФронтолБезВводаКоличества'', sprres.code, '''', '''', '''' ), 0 ) AS noenterquantity,/##CHR(13)##//##CHR(10)##/ (SELECT TOP 1 fr_code FROM " + СПИСОКФР + " WHERE firm = temp.firm) AS tovar_firm " +/##CHR(13)##//##CHR(10)##/ ЧастьЗапросаФирмаБезНДС + /##CHR(13)##//##CHR(10)##/ ЧастьЗапросаРеквизитовАгента;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/kodGrPintChek = "";/##CHR(13)##//##CHR(10)##/kodGrPintCopy = "";/##CHR(13)##//##CHR(10)##/kodGrPintInvoice = "";/##CHR(13)##//##CHR(10)##/kodGrPintMark = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиЧека'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintChek,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиКопии'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintCopy,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиСчета'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintInvoice,/##CHR(13)##//##CHR(10)##/ CASE WHEN sprres.cat = ''001'' THEN dbo.fn_getchar_ex ( ''SPR'', ''S02'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT)/##CHR(13)##//##CHR(10)##/ ELSE dbo.fn_getchar_ex ( ''SPR'', ''S05'', ''КодГруппыПечатиМарки'', temp.nn, DEFAULT, DEFAULT, DEFAULT) END AS kodGrPintMark "; /##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/vizualmodif = "";/##CHR(13)##//##CHR(10)##/ЛеваяГраница = "";/##CHR(13)##//##CHR(10)##/ПраваяГраница = "";/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬМОДИФИКАТОРЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ТекстЗапроса += ", dbo.fn_getint_ex( ''SPR'', ''S02'', ''ВизуальныйВыборМодификаторов'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS vizualmodif,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ЛеваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ЛеваяГраница,/##CHR(13)##//##CHR(10)##/ dbo.fn_getint_ex( ''SPR'', ''S02'', ''ПраваяГраницаМодификатора'', temp.nn, DEFAULT, DEFAULT, DEFAULT) AS ПраваяГраница ";/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ТекстЗапроса += " FROM " + ТОВАРЫ + " temp /##CHR(13)##//##CHR(10)##/INNER JOIN sprres sprres ON temp.code = sprres.maincode /##CHR(13)##//##CHR(10)##/LEFT OUTER JOIN sprres_g sprres_g ON sprres.group_ = sprres_g.code";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ДОБАВИТЬКОНТЕКСТ(ТекстЗапроса,"СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВЫБРАТЬКОНТЕКСТ( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/КоличествоСтрокОбщее = КоличествоСтрок("СписокТоваров");/##CHR(13)##//##CHR(10)##/Индикатор("Выгрузка товаров",КоличествоСтрокОбщее);/##CHR(13)##//##CHR(10)##/КоличествоСтрок=0;/##CHR(13)##//##CHR(10)##/ПЕРЕЙТИВНАЧАЛО("СписокТоваров");/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ( "Формирование файла выгрузки");/##CHR(13)##//##CHR(10)##/WHILE ( !КОНЕЦКОНТЕКСТА( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ //СИСТЕМНОЕСООБЩЕНИЕ( "Пожалуйста, подождите.");/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, " Выгрузка товаров. Обработка " + Alltrim(КоличествоСтрок) + " из " + ALLTRIM(КоличествоСтрокОбщее) );/##CHR(13)##//##CHR(10)##/ //индикатор/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если указано выгружать только разрезы, без самих карточек, то пропускаем карточки разрезов/##CHR(13)##//##CHR(10)##/ IF ( aspecttype == 2 AND СписокТоваров.f_subres )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Вычисляем код ФР, который должен использоваться с товаром/##CHR(13)##//##CHR(10)##/ // Если в группе ресурсов указан конкретный код - берем его/##CHR(13)##//##CHR(10)##/ // Иначе, берем фирму и по ней ищем код ФР в l_frlist/##CHR(13)##//##CHR(10)##/ mFr_code = ЕСЛИ( VAL( nkkm ) != 0, nkkm, СписокТоваров.tovar_firm ); // Фронтол 5.9 перестал понимать 22-е поле адекватно. Теперь оно выгружается как код группы печати чека, если не указано иное/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( СписокТоваров.code );/##CHR(13)##//##CHR(10)##/ mBarcode = ""; //ALLTRIM( СписокТоваров.barcode ); ШК выгрузятся в разделе ШК. Здесь они могут помешать, например для весового товара/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ rsubject = STR( VAL( СписокТоваров.spr_rsubject ) );/##CHR(13)##//##CHR(10)##/ mPaytype = "2";/##CHR(13)##//##CHR(10)##/ IF ( VAL( СписокТоваров.spr_paytype ) == 1 OR VAL( СписокТоваров.spr_paytype ) == 2 )/##CHR(13)##//##CHR(10)##/ mPaytype = STR( VAL( СписокТоваров.spr_paytype ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mName = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( name ), sprres_name ), 100 );/##CHR(13)##//##CHR(10)##/ mCname = LEFT( ЕСЛИ( IN_PARAM_NAME_WEIGHT == 0, ALLTRIM( cname ), sprres_shortname ), 100 ); // Краткое наименование используется для чека/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокТоваров.sprres_alcotype ) == 1;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = VAL( СписокТоваров.sprres_alcotype ) == 2;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( СписокТоваров.sprres_nnvid, "481" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = false;/##CHR(13)##//##CHR(10)##/ ПивнаяПродукция = false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ РазливнойАлко = mAlco AND LOWER( ALLTRIM( СписокТоваров.sprres_ed ) ) == ''л'';/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mNNVid = СписокТоваров.sprres_nnvid;/##CHR(13)##//##CHR(10)##/ mVolume = STR( ЕСЛИ( VAL( СписокТоваров.spregais_d_litr ) != 0, СписокТоваров.spregais_d_litr, СписокТоваров.sprres_d_litr ), 10, 6 );/##CHR(13)##//##CHR(10)##/ mAProc = STR( СписокТоваров.sprres_a_proc, 10, 2 );/##CHR(13)##//##CHR(10)##/ mEnterPrice = СписокТоваров.sprres_enterprice;/##CHR(13)##//##CHR(10)##/ mNoEnterquantity = СписокТоваров.noenterquantity;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //значение по умолчанию - обычный товар/##CHR(13)##//##CHR(10)##/ mF_marknotrequire = "1";/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_mark )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //Код группы маркируемого товара:/##CHR(13)##//##CHR(10)##/ //0005 - табачная продукция, /##CHR(13)##//##CHR(10)##/ //1520 - обувь, /##CHR(13)##//##CHR(10)##/ //0002 - изделия из меха, /##CHR(13)##//##CHR(10)##/ //0003 - лекарственные препараты, /##CHR(13)##//##CHR(10)##/ //9999 - прочая, /##CHR(13)##//##CHR(10)##/ //9998 - легпром, /##CHR(13)##//##CHR(10)##/ //9997 - шины, /##CHR(13)##//##CHR(10)##/ //9996 - фото, /##CHR(13)##//##CHR(10)##/ //9995 - духи и парфюм, /##CHR(13)##//##CHR(10)##/ //9994 - альтернативный табак, /##CHR(13)##//##CHR(10)##/ //9993 - молочная продукция, /##CHR(13)##//##CHR(10)##/ //9992 - вода/##CHR(13)##//##CHR(10)##/ //9991 - ювелирная продукция/##CHR(13)##//##CHR(10)##/ //9990 - никотинсодержащая продукция/##CHR(13)##//##CHR(10)##/ //9989 - пиво и пивные напитки/##CHR(13)##//##CHR(10)##/ //Все то что отмечено флагом "Маркированный", но со значением отличным от перечисленных, выгружается как значение 7 - прочая маркировка/##CHR(13)##//##CHR(10)##/ //в xPOS3 есть не все типы маркировки/##CHR(13)##//##CHR(10)##/ mMarkGroup = ЕСЛИ( СписокТоваров.sprres_markgroup == "0002", 2, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0003", 3, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "0005", 4, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "1520", 5, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9999", 7, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9998", 11, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9997", 10, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9996", 8, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9995", 9, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9994", 12, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9993", 13, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9991", 14, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9992", 15, /##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_markgroup == "9990", 16, 7 ) ) ) ) ) ) ) ) ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mF_marknotrequire = ЕСЛИ( СписокТоваров.sprres_f_marknotrequire, "1", "0");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //для крепкого алкоголя и пива устанавливаем свои признаки /##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 1; //алкогольная продукция/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 1 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 18; //разливное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_mark AND СписокТоваров.sprres_markgroup == "9989" AND СписокТоваров.sprres_f_draft == 0 )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 17; //фасованное пиво/##CHR(13)##//##CHR(10)##/ ELSE IF ( ПивнаяПродукция )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //обычный товар/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( mAlco )/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_f_make ) /##CHR(13)##//##CHR(10)##/ rsubject = "5";/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.sprres_cat == "002" )/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( rsubject ) == 2 ) //подакцизный товар/##CHR(13)##//##CHR(10)##/ rsubject = "2";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 3 ) //работа/##CHR(13)##//##CHR(10)##/ rsubject = "3";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 4 ) //услуга/##CHR(13)##//##CHR(10)##/ rsubject = "4";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 13 ) //иной предмет расчета/##CHR(13)##//##CHR(10)##/ rsubject = "6";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 10 ) //платеж/##CHR(13)##//##CHR(10)##/ rsubject = "7"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 11 ) //агентское вознаграждение/##CHR(13)##//##CHR(10)##/ rsubject = "8"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 7 ) //лотерейный билет/##CHR(13)##//##CHR(10)##/ rsubject = "9"; /##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 9 ) //результаты интеллектуальной деятельности/##CHR(13)##//##CHR(10)##/ rsubject = "10";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 12 ) //выплата/##CHR(13)##//##CHR(10)##/ rsubject = "11";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 18 ) //курортный сбор/##CHR(13)##//##CHR(10)##/ rsubject = "12";/##CHR(13)##//##CHR(10)##/ ELSE IF ( VAL( rsubject ) == 27 ) //выдача денежных средств/##CHR(13)##//##CHR(10)##/ rsubject = "13";/##CHR(13)##//##CHR(10)##/ ELSE /##CHR(13)##//##CHR(10)##/ rsubject = "1"; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF (_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52)/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.sprres_f_agentware == true AND !ПУСТО(СписокТоваров.sprres_vendor) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAgentDetailsCode = VAL(СписокТоваров.sprres_vendor);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ IF (!ПУСТО(СписокТоваров.ffdcode))/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокТоваров.ffdcode == 0 )/##CHR(13)##//##CHR(10)##/ mffdcode = 0;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 10 )/##CHR(13)##//##CHR(10)##/ mffdcode = 1;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 11 )/##CHR(13)##//##CHR(10)##/ mffdcode = 2; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 12 )/##CHR(13)##//##CHR(10)##/ mffdcode = 3;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 20 )/##CHR(13)##//##CHR(10)##/ mffdcode = 4; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 21 )/##CHR(13)##//##CHR(10)##/ mffdcode = 5;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 22 )/##CHR(13)##//##CHR(10)##/ mffdcode = 6;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 30 )/##CHR(13)##//##CHR(10)##/ mffdcode = 7;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 31 )/##CHR(13)##//##CHR(10)##/ mffdcode = 8;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 32 )/##CHR(13)##//##CHR(10)##/ mffdcode = 9;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 40 )/##CHR(13)##//##CHR(10)##/ mffdcode = 10; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 41 )/##CHR(13)##//##CHR(10)##/ mffdcode = 11; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 42 )/##CHR(13)##//##CHR(10)##/ mffdcode = 12;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 50 )/##CHR(13)##//##CHR(10)##/ mffdcode = 13;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 51 )/##CHR(13)##//##CHR(10)##/ mffdcode = 14; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 70 )/##CHR(13)##//##CHR(10)##/ mffdcode = 15; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 71 )/##CHR(13)##//##CHR(10)##/ mffdcode = 16; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 72 )/##CHR(13)##//##CHR(10)##/ mffdcode = 17; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 73 )/##CHR(13)##//##CHR(10)##/ mffdcode = 18;/##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 80 )/##CHR(13)##//##CHR(10)##/ mffdcode = 19; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 81 )/##CHR(13)##//##CHR(10)##/ mffdcode = 20; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 82 )/##CHR(13)##//##CHR(10)##/ mffdcode = 21; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 83 )/##CHR(13)##//##CHR(10)##/ mffdcode = 22; /##CHR(13)##//##CHR(10)##/ ELSE IF ( СписокТоваров.ffdcode == 255 )/##CHR(13)##//##CHR(10)##/ mffdcode = 23; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mCena = ALLTRIM( STR( СписокТоваров.cena, 8, 2 ) );/##CHR(13)##//##CHR(10)##/ //------ Обрабатываем товары, у которых не нулевая цена./##CHR(13)##//##CHR(10)##/ //------ Если указано грузить все, то грузим с любой ценой/##CHR(13)##//##CHR(10)##/ //------ Если товар заголовочный (есть разререзы), то цена тоже не важна/##CHR(13)##//##CHR(10)##/ IF ( !ТОВАРЫБЕЗЦЕНЫ AND VAL( mCena ) <= 0 AND !f_hchild )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mMin_cena = IIF( !EMPTY( min_cena ), ALLTRIM( STR( min_cena, 8, 2 ) ), "");/##CHR(13)##//##CHR(10)##/ // Расчитываем срок хранения/##CHR(13)##//##CHR(10)##/ mStore_period = IIF( store_period <> 0, ALLTRIM( DTOC( store_period + DATE( ) ) ), "" );/##CHR(13)##//##CHR(10)##/ // Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_sch = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", STR( VAL( nngroup ) ) );/##CHR(13)##//##CHR(10)##/ // Вариант использования разрезов: 0 — полный список; 1 — заданный список; 2 — заданный список с остатком/##CHR(13)##//##CHR(10)##/ mAspect_var = IIF( EMPTY( nngroup ) OR !f_razr OR aspecttype == 1 OR !f_hchild, "0", IIF( saldotype > 0, "2", "1" ) );/##CHR(13)##//##CHR(10)##/ // Код родительской группы/##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( IIF( parent == 0, "", STR( ABS( parent ) + IIF( parent < 0, 2000000000, 1000000000 ) ) ) );/##CHR(13)##//##CHR(10)##/ // Код налога/##CHR(13)##//##CHR(10)##/ mKodn = IIF( f_nalogs, ALLTRIM( STR( VAL( kodn ) ) ), "" );/##CHR(13)##//##CHR(10)##/ //если в карточке фирмы установлен флаг "Не является плательщиком НДС", то выгружаем ставку БезНДС для товара/##CHR(13)##//##CHR(10)##/ IF ( f_nalogs AND firm_fwonds )/##CHR(13)##//##CHR(10)##/ mKodn = ALLTRIM( STR( VAL( СтавкаБезНДС ) ) );/##CHR(13)##//##CHR(10)##/ // Артикул/##CHR(13)##//##CHR(10)##/ mArticle = LEFT( ALLTRIM( article ), 20 );/##CHR(13)##//##CHR(10)##/ // Путь к картинке/##CHR(13)##//##CHR(10)##/ mImage_path = ALLTRIM( image_path );/##CHR(13)##//##CHR(10)##/ mNote = STDE( note );/##CHR(13)##//##CHR(10)##/ mKkm_section = ALLTRIM( STR( VAL( kkm_section ) ) );/##CHR(13)##//##CHR(10)##/ // Принтер для печати чеков/##CHR(13)##//##CHR(10)##/ mCheckPrinter = ALLTRIM( checkPrinter );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mFlags = IIF( fractqty OR waretype == 0 OR РазливнойАлко, "1", "0") + "," + //1. дробное количество (весовой)/##CHR(13)##//##CHR(10)##/ "1" + "," + //2. продажа/##CHR(13)##//##CHR(10)##/ "1" + "," + //3. возврат/##CHR(13)##//##CHR(10)##/ "1" + "," + //4. отрицательные остатки/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "1", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "0", "1" ) ) + "," + //5. без ввода количества/##CHR(13)##//##CHR(10)##/ "1" + "," + //6. списание остатков/##CHR(13)##//##CHR(10)##/ ЕСЛИ( mEnterPrice, "1", "0" ) + "," + //7. редактирование цены/##CHR(13)##//##CHR(10)##/ ЕСЛИ( СписокТоваров.sprres_f_mark, "0", /##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "1", "0" ) ) + "," + //8. ввод количества вручную/##CHR(13)##//##CHR(10)##/ "," + //9. печатать в чеке/##CHR(13)##//##CHR(10)##/ "," + //10. наливаемый товар/##CHR(13)##//##CHR(10)##/ ","; //11. скидки/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ mFlagsV = ЕСЛИ( fractqty OR waretype == 0, "1", "0") + "," + //1. дробное количество (весовой)/##CHR(13)##//##CHR(10)##/ "0" + "," + //2. продажа/##CHR(13)##//##CHR(10)##/ "0" + "," + //3. возврат/##CHR(13)##//##CHR(10)##/ "1" + "," + //4. отрицательные остатки/##CHR(13)##//##CHR(10)##/ "1" + "," + //5. без ввода количества/##CHR(13)##//##CHR(10)##/ "1" + "," + //6. списание остатков/##CHR(13)##//##CHR(10)##/ "1" + "," + //7. редактирование цены/##CHR(13)##//##CHR(10)##/ ЕСЛИ( enterqty, "1", "0" ) + "," + //8. ввод количества вручную/##CHR(13)##//##CHR(10)##/ "," + //9. печатать в чеке/##CHR(13)##//##CHR(10)##/ "," + //10. наливаемый товар/##CHR(13)##//##CHR(10)##/ ","; //11. скидки/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mActionPriz = IIF( f_action == 0, IIF( maxdiscount == -1, "", ALLTRIM( STR( maxdiscount, 16, 2 ) ) ), "0");/##CHR(13)##//##CHR(10)##/ // Остаток и PLU/##CHR(13)##//##CHR(10)##/ mTmcSaldo = ALLTRIM( STR( kolp, 10, 3 ) );/##CHR(13)##//##CHR(10)##/ mPlu = ALLTRIM( plu );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mDsc_value = "";/##CHR(13)##//##CHR(10)##/ mVtype = "";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Если у товара указан код скидки, то надо вычислить ее значение/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( discount ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если надо вычислить значение скидки, то вычисляем ее/##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( value );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Вычисляем и подставляем Коды Групп печати/##CHR(13)##//##CHR(10)##/ IF ( !_ВЫГРУЖАТЬГРУППЫПЕЧАТИ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( mFr_code ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ kodGrPintChek = mFr_code;/##CHR(13)##//##CHR(10)##/ kodGrPintCopy = mFr_code;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка = mCode + ";" + //1. код/##CHR(13)##//##CHR(10)##/ mBarcode + ";" + //2. Штрихкоды через запятую (максимальная длина штрихкода не превышает 40 символов)/##CHR(13)##//##CHR(10)##/ STDE( mName, 128 ) + ";" + //3. Наименование/##CHR(13)##//##CHR(10)##/ STDE( mCname, 128 ) + ";" + //4. Текст для чека/##CHR(13)##//##CHR(10)##/ mCena + ";" + //5. Цена/##CHR(13)##//##CHR(10)##/ mTmcSaldo + ";" + //6. Остаток/##CHR(13)##//##CHR(10)##/ ";" + //7. Не используется/##CHR(13)##//##CHR(10)##/ mFlags + ";" + //8. флаги контроля/##CHR(13)##//##CHR(10)##/ mMin_cena + ";" + //9. Минимальная цена/##CHR(13)##//##CHR(10)##/ mStore_period + ";" + //10. Не используется/##CHR(13)##//##CHR(10)##/ mAspect_sch + ";" + //11. Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_var + ";" + //12. Вариант использования разрезов/##CHR(13)##//##CHR(10)##/ rsubject + ";" + //13. Признак предмета расчета/##CHR(13)##//##CHR(10)##/ ";" + //14. Коэффициент штрихкода/##CHR(13)##//##CHR(10)##/ ";" + //15. Не используется/##CHR(13)##//##CHR(10)##/ mParent + ";" + //16. Код родительской группы/##CHR(13)##//##CHR(10)##/ "1" + ";" + //17. Товар или группа: для товара 1, для группы 0/##CHR(13)##//##CHR(10)##/ ";" + //18. Не используется/##CHR(13)##//##CHR(10)##/ "0" + ";" + //19. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //20. Серия/##CHR(13)##//##CHR(10)##/ ";" + //21. Сертификат/##CHR(13)##//##CHR(10)##/ mFr_code + ";" + //22. Не используется/##CHR(13)##//##CHR(10)##/ mKodn + ";" + //23. Код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. Не используется/##CHR(13)##//##CHR(10)##/ mPlu + ";" + //25. Не используется/##CHR(13)##//##CHR(10)##/ mArticle + ";" + //26. Артикул/##CHR(13)##//##CHR(10)##/ mVtype + ";" + //27. Не используется/##CHR(13)##//##CHR(10)##/ mDsc_value + ";" + //28. Не используется/##CHR(13)##//##CHR(10)##/ mActionPriz + ";" + //29. Максимальная скидка, %/##CHR(13)##//##CHR(10)##/ mCheckPrinter + ";" + //30. Не используется/##CHR(13)##//##CHR(10)##/ mImage_path +";" + //31. Имя файла с картинкой формата PNG, BMP, JPEG, GIF, TIFF, ICO и путь к нему/##CHR(13)##//##CHR(10)##/ mNote + ";" + //32. Описание/##CHR(13)##//##CHR(10)##/ ";" + //33. Кратность количества/##CHR(13)##//##CHR(10)##/ "0" + ";" + //34. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //35. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //36. Не используется/##CHR(13)##//##CHR(10)##/ mKkm_section + ";" + //37. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //38. Не используется/##CHR(13)##//##CHR(10)##/ kodGrPintChek + ";" + //39. Код ГП товара/##CHR(13)##//##CHR(10)##/ kodGrPintCopy + ";" + //40. Код ГП копии товара/##CHR(13)##//##CHR(10)##/ ";" + //41. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //42. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //43. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //44. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //45. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //46. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //47. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //48. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //49. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //50. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //51. Не используется/##CHR(13)##//##CHR(10)##/ mF_marknotrequire + ";"; //52. Значение флага «Без ввода ШК маркировки»/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( ( mAlco OR ПивнаяПродукция ) AND !РазливнойАлко )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += mNNVid + ";" + //53. Код вида продукции/##CHR(13)##//##CHR(10)##/ mVolume + ";" + //54. Емкость тары, л./##CHR(13)##//##CHR(10)##/ mMarkGroup + ";" + //55. Тип номенклатуры/##CHR(13)##//##CHR(10)##/ ЕСЛИ( ПивнаяПродукция, "1", "0" ) + ";" + //56. Маркировка алкогольной продукции/##CHR(13)##//##CHR(10)##/ mAProc + ";"; //57. Крепость алкогольной продукции/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( РазливнойАлко )/##CHR(13)##//##CHR(10)##/ mMarkGroup = 0; //Обычный товар/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ Строка += ";" + //53. Код вида продукции/##CHR(13)##//##CHR(10)##/ ";" + //54. Емкость тары, л./##CHR(13)##//##CHR(10)##/ mMarkGroup + ";" + //55. Тип номенклатуры/##CHR(13)##//##CHR(10)##/ ";" + //56. Маркировка алкогольной продукции/##CHR(13)##//##CHR(10)##/ ";"; //57. Крепость алкогольной продукции/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ Строка += mPaytype + ";" + //58. Признак способа расчета/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !ПУСТО(mAgentDetailsCode), mAgentDetailsCode, "" ) + ";" + //59. Код реквизитов агента/##CHR(13)##//##CHR(10)##/ ";" + //60. Сумма акциза, включенная в стоимость товара/##CHR(13)##//##CHR(10)##/ ";" + //61. Код страны происхождения товара (допустимы только цифры)/##CHR(13)##//##CHR(10)##/ ";" + //62. Номер таможенной декларации/##CHR(13)##//##CHR(10)##/ ";" + //63. Наименование лотереи/##CHR(13)##//##CHR(10)##/ ";" + //64. Код вида номенклатурной классификации (EAN-13)/##CHR(13)##//##CHR(10)##/ ";" + //65. Проверка соответствия товара штрихкоду маркировки: 0 – по штрихкодам товара; 1 – по штрихкоду регистрации./##CHR(13)##//##CHR(10)##/ mffdcode; //66. Мера количества предмета расчета/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если разливной алкоголь, то добавляем еще одну строку с кодом + 90000000/##CHR(13)##//##CHR(10)##/ IF ( РазливнойАлко )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mffdcode = 11; //литр/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ Строка = STR( VAL( mCode ) + 90000000 ) + ";" + //1. код/##CHR(13)##//##CHR(10)##/ mBarcode + ";" + //2. Штрихкоды через запятую (максимальная длина штрихкода не превышает 40 символов)/##CHR(13)##//##CHR(10)##/ STDE( "ВТ " + mName, 128 ) + ";" + //3. Наименование/##CHR(13)##//##CHR(10)##/ STDE( "ВТ " + mCname, 128 ) + ";" + //4. Текст для чека/##CHR(13)##//##CHR(10)##/ mCena + ";" + //5. Цена/##CHR(13)##//##CHR(10)##/ mTmcSaldo + ";" + //6. Остаток/##CHR(13)##//##CHR(10)##/ ";" + //7. Не используется/##CHR(13)##//##CHR(10)##/ mFlagsV + ";" + //8. флаги контроля/##CHR(13)##//##CHR(10)##/ mMin_cena + ";" + //9. Минимальная цена/##CHR(13)##//##CHR(10)##/ mStore_period + ";" + //10. Не используется/##CHR(13)##//##CHR(10)##/ mAspect_sch + ";" + //11. Код схемы разрезов/##CHR(13)##//##CHR(10)##/ mAspect_var + ";" + //12. Вариант использования разрезов/##CHR(13)##//##CHR(10)##/ rsubject + ";" + //13. Признак предмета расчета/##CHR(13)##//##CHR(10)##/ ";" + //14. Коэффициент штрихкода/##CHR(13)##//##CHR(10)##/ ";" + //15. Не используется/##CHR(13)##//##CHR(10)##/ mParent + ";" + //16. Код родительской группы/##CHR(13)##//##CHR(10)##/ "1" + ";" + //17. Товар или группа: для товара 1, для группы 0/##CHR(13)##//##CHR(10)##/ ";" + //18. Не используется/##CHR(13)##//##CHR(10)##/ "0" + ";" + //19. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //20. Серия/##CHR(13)##//##CHR(10)##/ ";" + //21. Сертификат/##CHR(13)##//##CHR(10)##/ mFr_code + ";" + //22. Не используется/##CHR(13)##//##CHR(10)##/ mKodn + ";" + //23. Код налоговой группы/##CHR(13)##//##CHR(10)##/ ";" + //24. Не используется/##CHR(13)##//##CHR(10)##/ mPlu + ";" + //25. Не используется/##CHR(13)##//##CHR(10)##/ mArticle + ";" + //26. Артикул/##CHR(13)##//##CHR(10)##/ mVtype + ";" + //27. Не используется/##CHR(13)##//##CHR(10)##/ mDsc_value + ";" + //28. Не используется/##CHR(13)##//##CHR(10)##/ mActionPriz + ";" + //29. Максимальная скидка, %/##CHR(13)##//##CHR(10)##/ mCheckPrinter + ";" + //30. Не используется/##CHR(13)##//##CHR(10)##/ mImage_path +";" + //31. Имя файла с картинкой формата PNG, BMP, JPEG, GIF, TIFF, ICO и путь к нему/##CHR(13)##//##CHR(10)##/ mNote + ";" + //32. Описание/##CHR(13)##//##CHR(10)##/ ";" + //33. Кратность количества/##CHR(13)##//##CHR(10)##/ "0" + ";" + //34. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //35. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //36. Не используется/##CHR(13)##//##CHR(10)##/ mKkm_section + ";" + //37. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //38. Не используется/##CHR(13)##//##CHR(10)##/ kodGrPintChek + ";" + //39. Код ГП товара/##CHR(13)##//##CHR(10)##/ kodGrPintCopy + ";" + //40. Код ГП копии товара/##CHR(13)##//##CHR(10)##/ ";" + //41. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //42. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //43. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //44. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //45. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //46. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //47. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //48. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //49. Не используется/##CHR(13)##//##CHR(10)##/ ";" + //50. Не используется/##CHR(13)##//##CHR(10)##/ ";"; //51. Не используется/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //алкогольные реквизиты/##CHR(13)##//##CHR(10)##/ Строка += ";" + //52. Значение флага «Без ввода ШК маркировки»/##CHR(13)##//##CHR(10)##/ mNNVid + ";" + //53. Код вида продукции/##CHR(13)##//##CHR(10)##/ mVolume + ";" + //54. Емкость тары, л./##CHR(13)##//##CHR(10)##/ "1" + ";" + //55. Тип номенклатуры/##CHR(13)##//##CHR(10)##/ ЕСЛИ( ПивнаяПродукция, "1", "0" ) + ";" + //56. Маркировка алкогольной продукции/##CHR(13)##//##CHR(10)##/ mAProc + ";"; //57. Крепость алкогольной продукции /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //прочие реквизиты/##CHR(13)##//##CHR(10)##/ Строка += mPaytype + ";" + //58. Признак способа расчета/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !ПУСТО(mAgentDetailsCode), mAgentDetailsCode, "" ) + ";" + //59. Код реквизитов агента/##CHR(13)##//##CHR(10)##/ ";" + //60. Сумма акциза, включенная в стоимость товара/##CHR(13)##//##CHR(10)##/ ";" + //61. Код страны происхождения товара (допустимы только цифры)/##CHR(13)##//##CHR(10)##/ ";" + //62. Номер таможенной декларации/##CHR(13)##//##CHR(10)##/ ";" + //63. Наименование лотереи/##CHR(13)##//##CHR(10)##/ ";" + //64. Код вида номенклатурной классификации (EAN-13)/##CHR(13)##//##CHR(10)##/ ";" + //65. Проверка соответствия товара штрихкоду маркировки: 0 – по штрихкодам товара; 1 – по штрихкоду регистрации./##CHR(13)##//##CHR(10)##/ mffdcode; //66. Мера количества предмета расчета/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Отмечаем в таблице штриховых кодов, что товар был выгружен/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ШТРИХКОДЫ + " SET used= 1 WHERE code= ''" + code + "''" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ(1, "СписокТоваров");/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УДАЛИТЬКОНТЕКСТ("СписокТоваров");/##CHR(13)##//##CHR(10)##/ИНДИКАТОР();/##CHR(13)##//##CHR(10)##/СИСТЕМНОЕСООБЩЕНИЕ();/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',212.00000000,'/##CHR(13)##//##CHR(10)##///Выгрузка остатков по разрезам в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем команду - либо заменить (обновить) информацию о разрезах, либо добавить/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, IIF( saldotype == 1, "$$$REPLACEASPECTREMAINSWITHOUTSALE", "$$$ADDASPECTREMAINS" ) );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT t1.code AS subcode, t1.nngroup, t1.aspect, t1.kolp, t1.cena, t2.code /##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN " + ТОВАРЫ + " t2 ON t1.subcode = t2.nn /##CHR(13)##//##CHR(10)##/ WHERE t1.f_subres = 1 AND t1.nngroup <> '''' AND t1.cena >" + IIF( !ТОВАРЫБЕЗЦЕНЫ, "", "=" ) + " 0", "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокТоваров" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Проходим по списку значений разрезов и формируем строку кодов/##CHR(13)##//##CHR(10)##/ // Можно было бы пройти просто по l_aspectvalue и по коду комбинации /##CHR(13)##//##CHR(10)##/ // характеристик сформировать список, но важен порядок следования кодов/##CHR(13)##//##CHR(10)##/ // А он есть только в таблице l_aspect, поэтому проходим по ней/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT aspectcode FROM " + СОСТАВСХЕМРАЗРЕЗОВ + " /##CHR(13)##//##CHR(10)##/ WHERE schemecode= ''" + СписокТоваров.nngroup + "'' /##CHR(13)##//##CHR(10)##/ ORDER BY f_num", "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ counter = 1;/##CHR(13)##//##CHR(10)##/ aspectList = "";/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокРазрезов" ) AND counter <= 5 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Достаем значение разреза /##CHR(13)##//##CHR(10)##/ aspectValue = ALLTRIM( STR( VAL( ЗАПРОС( "SELECT value FROM " + РАЗРЕЗЫТМЦ + " /##CHR(13)##//##CHR(10)##/ WHERE wareaspectcode= ''" + СписокТоваров.aspect + "'' AND /##CHR(13)##//##CHR(10)##/ aspectcode = ''" + СписокРазрезов.aspectcode + "''" ) ) ) );/##CHR(13)##//##CHR(10)##/ // Для тех разрезов, для которых нет значения для данного товара, проставляем специальное значение 999999999/##CHR(13)##//##CHR(10)##/ aspectList = aspectList + IIF( !EMPTY( aspectList ), ",", "" ) + ЕСЛИ( aspectValue == "0", "999999999", aspectValue ); /##CHR(13)##//##CHR(10)##/ counter++;/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокРазрезов" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##/ // Если удалось собрать список кодов - формируем строку в файле/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( aspectList ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Строка в формате АТОЛ/##CHR(13)##//##CHR(10)##/ // остаток только если Признак загрузки остатков не равен "не надо загружать"/##CHR(13)##//##CHR(10)##/ Строка = code + ";" + IIF( saldotype <> 0,STR( kolp, 10, 3 ), "0") + ";" + /##CHR(13)##//##CHR(10)##/ aspectList + ";" + ALLTRIM( STR( cena, 8, 2 ) ) + ";;";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ // Записываем в таблицу штриховых кодов, список разрезов /##CHR(13)##//##CHR(10)##/ ЗАПРОС("UPDATE " + ШТРИХКОДЫ + " SET aspectlist= ''" + aspectList + "'', used= 1, code = ''"+code+"'' WHERE code= ''" + subcode + "''");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокТоваров" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',213.00000000,'//Выгрузка штриховых кодов в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Штриховые коды идут в конце файла, после всех товаров /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDBARCODES" );/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT koef, barcode, code, aspectlist FROM " + ШТРИХКОДЫ + " /##CHR(13)##//##CHR(10)##/ WHERE used = 1 AND barcode <> '''' ", "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокШтрихКодов" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Строка = ALLTRIM( barcode ) + ";" + ALLTRIM( code ) + ";" + ALLTRIM( aspectlist ) + ";" + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( _ВЫГРУЖАТЬКОЭФФИЦИЕНТШК_ФРОНТОЛ, ALLTRIM( STRTRAN( koef, ",", ALLTRIM( delimiter ) ) ), "1" ) + ";";/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/} /##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокШтрихКодов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',225.00000000,'//Выгрузка дисконтных карт клиентов в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц КЛИЕНТЫ и КАРТЫ/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT cln.code AS clientcode, crd.code AS cardcode/##CHR(13)##//##CHR(10)##/// FROM " + КЛИЕНТЫ + " cln/##CHR(13)##//##CHR(10)##/// INNER JOIN " + КАРТЫ + " crd ON crd.client = cln.code", "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт клиентов/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTCCARDS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокКартКлиентов" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mClientCode = ALLTRIM( STR( VAL( clientcode ) ) );/##CHR(13)##//##CHR(10)##/// mCardCode = ALLTRIM( STR( VAL( cardcode ) ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Формируем строку в формате АТОЛ/##CHR(13)##//##CHR(10)##/// Строка = mClientCode + ";1;" + mCardCode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Записываем полученную строку в файл/##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокКартКлиентов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',231.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##/RETURN path_out;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',200.00000000,'//Инициализация ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',201.00000000,'// Параметр, отвечает за необходимость дописывать к наименованию товара его вес или объем/##CHR(13)##//##CHR(10)##/// значение "0" - не дописывать, любое другое значение - дописывать/##CHR(13)##//##CHR(10)##/IN_PARAM_NAME_WEIGHT = 1;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ОПРЕДЕЛЯТЬППР_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##/IF ( ТИП( "_ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52" ) == "U" )/##CHR(13)##//##CHR(10)##/ _ВЫГРУЖАТЬРЕКВИЗИТЫАГЕНТОВ_ФРОНТОЛ52 = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///Подготовка к выгрузке данных в ККМ./##CHR(13)##//##CHR(10)##///------ Если указанный файл-флаг уже существует, это говорит о том, что предыдущие данные еще не были загружены в ККМ, поэтому в эту ККМ данные не выгружаем/##CHR(13)##//##CHR(10)##/_КОДОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ТЕКСТОШИБКИ = "";/##CHR(13)##//##CHR(10)##/_ОШИБКАВЫПОЛНЕНИЯ = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( exchangeservice_out ) AND !ПУСТО( path_flag_out ) AND ФАЙЛ( ALLTRIM( path_flag_out ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Обнаружены необработанные данные (найден файл-флаг " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( path_flag_out ) + "), поэтому новые данные выгружены не были.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',214.00000000,'//Завершение выгрузки товаров в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если надо, то выгружаем алкокоды/##CHR(13)##//##CHR(10)##/IF ( _ВЫГРУЖАТЬАЛКОКОДЫ_ФРОНТОЛ52 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгрузка алкокодов /##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDALCCODES" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT sprnn.maincode, sprnn.nnvid, sprnn.ed, egais.alcocode,/##CHR(13)##//##CHR(10)##/ dbo.fn_alcotype( sprres.nnvid ) AS alcotype,/##CHR(13)##//##CHR(10)##/ FROM " + ТОВАРЫ + " t1/##CHR(13)##//##CHR(10)##/ INNER JOIN sprnn sprnn ON sprnn.maincode = t1.code/##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_egais egais ON egais.code = sprnn.nn/##CHR(13)##//##CHR(10)##/ WHERE egais.alcocode <> ''''", "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ // Если продукция разливная, то алкокод связываем со второй карточкой, которая для вскрытия тары/##CHR(13)##//##CHR(10)##/ WHILE ( !КОНЕЦКОНТЕКСТА( "СписокАлкокодов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mAlco = VAL( СписокАлкокодов.alcotype ) == 1 AND !ВСПИСКЕ( СписокАлкокодов.nnvid, "481" ); /##CHR(13)##//##CHR(10)##/ РазливнойАлко = mAlco AND LOWER( ALLTRIM( СписокАлкокодов.ed ) ) == ''л'';/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, ЕСЛИ( РазливнойАлко, STR( VAL( СписокАлкокодов.maincode ) + 90000000 ), СписокАлкокодов.maincode ) + ";" + СписокАлкокодов.alcocode );/##CHR(13)##//##CHR(10)##/ ПРОПУСТИТЬ( 1, "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ УДАЛИТЬКОНТЕКСТ( "СписокАлкокодов" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Теперь просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/ОЖИДАНИЕ( 5000 );/##CHR(13)##//##CHR(10)##/ФайлФлаг = ФайлСоздать( path_flag_out );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ФайлФлаг, "");/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ФайлФлаг );/##CHR(13)##//##CHR(10)##/*//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',216.00000000,'//Начало выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( FileExists( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления различных объектов, если установлены галочки/##CHR(13)##//##CHR(10)##/// Схемы внутренних автоматических скидок/##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИСХЕМ AND !f_rmk ) ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',217.00000000,'//Выгрузка схем скидок в ККМ./##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/// Схемами скидок являются папки в справочнике скидок, поэтому/##CHR(13)##//##CHR(10)##/// выбираем данные из временной таблицы с папками скидок/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + ПАПКИСКИДОК, "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления схем скидок/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDAUTODISCSCHMS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "ПапкиСкидок" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, STR( ic + 1000000000 ) + ";" + LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/ LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 ) + ";" + /##CHR(13)##//##CHR(10)##/ IIF( union_type > 0, ALLTRIM( STR( union_type - 1) ), "" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "ПапкиСкидок" );*//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',226.00000000,'//Выгрузка объектов скидок в ККМ. не используется в СЕ. Выгружаются Акции и мероприятия/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из пересечения временных таблиц ОБЪЕКТЫ и СКИДКИ И ТОВАРОВ/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT DISTINCT sprschem.code, sprschem.start_date, sprschem.end_date, sprschem.name, dsc.ctext, dsc.code AS discount/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprmdiscount_schem sprschem ON temp.schem = sprschem.code/##CHR(13)##//##CHR(10)##/ INNER JOIN specmdiscount dsc ON sprschem.discount = dsc.code", "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEMARKETINGACTIONSBYCODE" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокАкций.code );/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПерейтиВНачало( "СписокАкций" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMARKETINGACTIONS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, СписокАкций.code + ";" + DTOC( СписокАкций.start_date ) + ";" + DTOC(СписокАкций.end_date ) +/##CHR(13)##//##CHR(10)##/ ";;;" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";1;0;1;1;" );/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПерейтиВНачало( "СписокАкций" );/##CHR(13)##//##CHR(10)##/НомерПоПорядку = 1;/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокАкций" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT obj.client_folder, obj.clientfolder_ic, obj.client, obj.card, obj.f_subres,/##CHR(13)##//##CHR(10)##/ obj.ware_folder, obj.warefolder_ic, obj.maincode, obj.discount, obj.aspect,/##CHR(13)##//##CHR(10)##/ ISNULL( dsc.f_condition, 0 ) AS f_condition, dsc.parent AS dsc_parent,/##CHR(13)##//##CHR(10)##/ ware.group_, dsc.card_state, obj.value, obj.f_evaluate/##CHR(13)##//##CHR(10)##/ FROM " + ОБЪЕКТЫ + " obj/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN " + СКИДКИ + " dsc ON obj.discount = dsc.code/##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN " + ТОВАРЫВОБЪЕКТАХ + " ware ON obj.nn = ware.code/##CHR(13)##//##CHR(10)##/ WHERE obj.schem = ''" + СписокАкций.code + "''", "СписокОбъектов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDMARKETINGEVENTS" );/##CHR(13)##//##CHR(10)##/ Строка = "";/##CHR(13)##//##CHR(10)##/ Строка2 = "";/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СписокОбъектов" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( СписокОбъектов.f_evaluate )/##CHR(13)##//##CHR(10)##/ Процент = STR( ВЫЧИСЛИТЬ( СписокОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ Процент = STR( VAL( СписокОбъектов.value ), 10, 2 );/##CHR(13)##//##CHR(10)##/ IF ( ware_folder OR !ПУСТО( maincode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Строка += ЕСЛИ( !ПУСТО( Строка ), CHR( 149 ), "" ) + IIF( ware_folder, ALLTRIM( STR( 1000000000 + warefolder_ic ) ), ALLTRIM( maincode ) );/##CHR(13)##//##CHR(10)##/ Строка2 += ЕСЛИ( !ПУСТО( Строка2 ), CHR( 149 ), "" ) + Процент;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокОбъектов" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СписокОбъектов" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, STR( НомерПоПорядку ) + ";" + СписокАкций.code + ";" + STDE( СписокАкций.name ) + ";" + STDE( СписокАкций.ctext ) + ";2;" + Строка + ";;" + Строка2 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь записываем условия/##CHR(13)##//##CHR(10)##/ ФАЙЛЗАПИСАТЬСТРОКУ( ДескрипторФайла, "$$$ADDMARKETINGCONDITIONS" );/##CHR(13)##//##CHR(10)##/ ДОБАВИТЬКОНТЕКСТ( "SELECT * FROM specmdiscount WHERE code = ''" + СписокАкций.discount + "''", "Условие", 1 );/##CHR(13)##//##CHR(10)##/ ВЫБРАТЬКОНТЕКСТ( "Условие" );/##CHR(13)##//##CHR(10)##/ СписокУсловий = "";/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( summa_min ) OR !EMPTY( summa_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";1;>=;" + ALLTRIM( STR( summa_min, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";1;<=;" + ALLTRIM( STR( summa_max, 10, 4 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";2;>=;" + ALLTRIM( STR( kolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";2;<=;" + ALLTRIM( STR( kolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";3;>=;" + ALLTRIM( STR( ckolp_min, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";3;<=;" + ALLTRIM( STR( ckolp_max, 10, 3 ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ) )/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";5;1;" + ALLTRIM( prefix_min ) + ";" + ALLTRIM( prefix_max ) + ";" + STR( LEN( ALLTRIM( prefix_min ) ) ) + ";" + STR( LEN( ALLTRIM( prefix_max ) ) ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( time_min ) OR !EMPTY( time_max ) )/##CHR(13)##//##CHR(10)##/ СписокУсловий += STR( НомерПоПорядку ) + ";6;" + ALLTRIM( time_min ) + ";" + ALLTRIM( time_max ) + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( wday_min ) OR !EMPTY( wday_max ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СписокУсловий += КодМероприятия + ";7;";/##CHR(13)##//##CHR(10)##/ СписокДней = "";/##CHR(13)##//##CHR(10)##/ day = 1;/##CHR(13)##//##CHR(10)##/ WHILE ( day <= 7 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( wday_min <= wday_max )/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min AND day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ СписокДней += ЕСЛИ( !ПУСТО( СписокДней ), ",", "" ) + ЕСЛИ( day >= wday_min OR day <= wday_max, "1", "0" );/##CHR(13)##//##CHR(10)##/ day++;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ СписокУсловий += СписокДней + CHR( 13 ) + CHR( 10 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( СписокУсловий ) )/##CHR(13)##//##CHR(10)##/ ФайлЗаписать( ДескрипторФайла, СписокУсловий );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ НомерПоПорядку++;/##CHR(13)##//##CHR(10)##/ Пропустить( 1, "СписокАкций" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокАкций" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',232.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',235.00000000,'//Выгрузка пользователей в ККМ/##CHR(13)##//##CHR(10)##/// Если уже есть не обработанный файл с данными, то дописываем его/##CHR(13)##//##CHR(10)##/ПроверкаФлага = "";/##CHR(13)##//##CHR(10)##/ДескрипторФайла = -1;/##CHR(13)##//##CHR(10)##/IF ( ФАЙЛ( path_out ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( path_out, 0, 1 );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось открыть файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Первую строку пропускаем/##CHR(13)##//##CHR(10)##/ ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/ // Во второй строке первый символ указывает на то был ли файл обработан ККМ/##CHR(13)##//##CHR(10)##/ ПроверкаФлага = ФайлПрочитать( ДескрипторФайла, "S" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/IF ( LEFT( ПроверкаФлага, 1 ) == "#" )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Переходим в конец файла/##CHR(13)##//##CHR(10)##/ ФайлУстановитьУказатель( ДескрипторФайла, 0, 0, 2 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если файл уже существовал, то закрываем его/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла != -1 ) ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ // Создаем новый файл/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлСоздать( path_out );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла == -1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ _КОДОШИБКИ = "001";/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "ККМ ''" + ALLTRIM( name ) + "''. Не удалось создать файл для выгрузки данных ''" + ALLTRIM( path_out ) + "''.";/##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "##@@&&" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "#" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/// Для ККМ АТОЛ даем команды удаления ТМЦ. /##CHR(13)##//##CHR(10)##/IF ( ПРИЗНАКОЧИСТКИККМ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Если указано очистить список товаров в ККМ, подаем команду общей очистки/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$DELETEALLUSERS" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выгружаем справочник пользователей (из справочника работников)/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT code, name, chequetext, profile, password, ex_code FROM " + Пользователи, "СправочникПользователей"); /##CHR(13)##//##CHR(10)##/Выбратьконтекст( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDUSERS" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СправочникПользователей" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + STDE( chequetext ) + ";" + ALLTRIM( profile ) + ";" + STDE( password ) + ";" + STDE( ex_code ) + ";" );/##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СправочникПользователей" );/##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/IF ( ВЫГРУЖАТЬСОТРУДНИКОВ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ // Выгружаем справочник сотрудников (из справочника работников)/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT temp.code, temp.name, temp.chequetext, temp.profile, temp.password, temp.ex_code, /##CHR(13)##//##CHR(10)##/ dbo.fn_getchar_ex ( ''SPR'',''S06'', ''ФронтолСправочникСотрудниковПользователь'', sprempl.code, DEFAULT, DEFAULT, DEFAULT) AS empl/##CHR(13)##//##CHR(10)##/ FROM " + Пользователи + " temp/##CHR(13)##//##CHR(10)##/ INNER JOIN sprempl sprempl ON temp.code = sprempl.maincode", "СправочникСотрудников"); /##CHR(13)##//##CHR(10)##/ Выбратьконтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDEMPLOYEES");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СправочникСотрудников" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( empl ) == 1 )/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";" + code + ";" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, code + ";" + STDE( name ) + ";;" + ex_code + ";" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ SKIP( 1 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СправочникСотрудников" );/##CHR(13)##//##CHR(10)##/}*//##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;/##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',223.00000000,'//Выгрузка папок клиентов в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками клиентов/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + ПАПКИКЛИЕНТОВ, "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCLIENTDISCS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "ПапкиКлиентов" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mParent = ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/// mCode = ALLTRIM( STR( ABS( ic ) + 1000000000 ) );/##CHR(13)##//##CHR(10)##/// mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// mDsc_value = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1) ), "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Если надо вычислять занчение скидки в момент выгрузки, то вычисляем его/##CHR(13)##//##CHR(10)##/// IF ( f_evaluate ) mDsc_value = Вычислить( mDsc_value, "C" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Строка = mCode + ";" + mParent + ";" + mName + ";" + mCtext + ";1;;;;;;;;;;;;;;;;" + mDsc_value + ";" + mVtype + ";" + mType_ + ";;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "ПапкиКлиентов" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',228.00000000,'//Создание файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для создания файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешного выполнения и ЛОЖЬ, в случае ошибки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ФайлФлаг = ФайлСоздать( path_flag_out );/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ФайлФлаг, "");/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ФайлФлаг );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',241.00000000,'/##CHR(13)##//##CHR(10)##///Проверка наличия данных для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае наличия данных для загрузки и ЛОЖЬ, в случае их отсутствия./##CHR(13)##//##CHR(10)##/// Проверяем наличие самих файлов и возможность чтения данных из них /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/ЕстьФайлы = false;/##CHR(13)##//##CHR(10)##/ИмяФайла = ФайлНайти( СжатьПробелы( ИмяФайла ) );/##CHR(13)##//##CHR(10)##/ФайлЗакончитьПоиск( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Пытаемся открыть файл. Файл может существовать, но быть занят, /##CHR(13)##//##CHR(10)##/// например, он в процессе формирования, поэтому его не удасться загрузить/##CHR(13)##//##CHR(10)##/IF ( !ПУСТО( ИмяФайла ) AND ( РучнойОбмен OR !ФАЙЛ( ИмяФайлаФлага ) OR !EMPTY( exchangeservice_in ) ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ДескрипторФайла = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ IF ( ДескрипторФайла >= 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ЕстьФайлы = true;/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПУСТО( ИмяФайла ) AND РучнойОбмен )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Для кассы """ + ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) + """ нет файлов для загрузки" );/##CHR(13)##//##CHR(10)##/ RETURN true;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕстьФайлы;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',242.00000000,'//Количество файлов с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается в случае файлового обмена для определения количества файлов для загрузки./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое равное количеству найденых файлов для загрузки./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Необходимо посчитать сколько есть файлов для загрузки /##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ИмяФайла = path_in;/##CHR(13)##//##CHR(10)##/path_in_alter = ЗАПРОС( "SELECT path_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА AND !ПУСТО( path_in_alter ) )/##CHR(13)##//##CHR(10)##/ ИмяФайла = path_in_alter;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/КоличествоФайлов = ФайлСписок( СжатьПробелы( ИмяФайла ), "ИменаФайловДляЗагрузки");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN КоличествоФайлов;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',243.00000000,'//Имя файла с данными./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///НомерФайла число целое. Указывает номер файла, если файлов с данными больше одного, имя которого необходимо вернуть./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ИменаФайловДляЗагрузки[ НомерФайла - 1 ];',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',244.00000000,'//Проверка возможности загрузки файла./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, проверку которого необходимо произвести./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения возможности загрузки указанного файла с данными./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной проверки. Если обработка возвращает ЛОЖЬ, то загрузка файла с данными не производится./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Возвращаем ИСТИНУ, если не стоит признак f_checkdone, иначе открываем файл и проверяем первый символ/##CHR(13)##//##CHR(10)##/checkResult = true;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьПризнакЗагрузки = ЕСЛИ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ, f_checkdone, ЗАПРОС("SELECT f_checkdone_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( ПроверятьПризнакЗагрузки )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ Файл = ФайлОткрыть( ИмяФайла );/##CHR(13)##//##CHR(10)##/ checkResult = ФайлПрочитать( Файл, "S" ) == "#";/##CHR(13)##//##CHR(10)##/ ФайлЗакрыть( Файл );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN checkResult;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',246.00000000,'PUBLIC ИСТОЧНИКДАТЫ, ДЕЛИТЬПОККМ, ДЕЛИТЬПОКС, СКЛАДЫИЗГРУПП, ФИРМЫИЗГРУПП, СПИСОКФР, ККМ_КОДОБОРУДОВАНИЯ,/##CHR(13)##//##CHR(10)##/КОДФРОНТ2, КОДФРОНТ3, КОДФРОНТ4, КОДФРОНТ5, КОДФРОНТ6;/##CHR(13)##//##CHR(10)##///Загрузка данных./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///ИмяФайла строка, имя файла, загрузку которого необходимо произвести. Данный параметр передается только при файловом обмене./##CHR(13)##//##CHR(10)##///Обработка вызывается для загрузки данных./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, в случае успешной загрузки. иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ЗАГРУЖАТЬЧЕКИ = ПЕРЕМЕННАЯ("_ФРОНТОЛ_ЗАГРУЖАТЬЧЕКИ", false);/##CHR(13)##//##CHR(10)##/IF ( ЗАГРУЖАТЬЧЕКИ )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ ККМ_КОДОБОРУДОВАНИЯ = КОДОБОРУДОВАНИЯ;/##CHR(13)##//##CHR(10)##/ IF ( !EQUIPMENT.ККМ_ЗагрузитьТранзакцииВЧеки( ККМ_КОДОБОРУДОВАНИЯ, ИмяФайла, sklad ) )/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ("Произошла ошибка при загрузке чеков из Фронтол", "Загрузка чеков из Фронтол");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //загружаем ДКС из чеков/##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТЫИЗЧЕКОВ", false ) AND !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ RETURN Сервис.РМКСоздатьДокументы( "", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ФОРМИРОВАТЬДОКУМЕНТПРИАВТОМАТИЧЕСКОЙЗАГРУЗКЕ", true ) AND АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Индикатор( );/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ RETURN true; /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА = ПЕРЕМЕННАЯ( "_ФРОНТОЛ_ТИПДОКУМЕНТАТОЛЬКОПОФОРМЕОБМЕНА", false );/##CHR(13)##//##CHR(10)##/ИМЯОБОРУДОВАНИЯ = ЗАПРОС( "SELECT name FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( "Обработка ККМ """ + ИМЯОБОРУДОВАНИЯ + """. Файл " + ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/fileHandle = ФайлОткрыть( ИмяФайла, 0, 1 );/##CHR(13)##//##CHR(10)##/kkmsklad = sklad;/##CHR(13)##//##CHR(10)##/firm = "";/##CHR(13)##//##CHR(10)##/processCount = 0;/##CHR(13)##//##CHR(10)##/итого = 0.00;/##CHR(13)##//##CHR(10)##///------ Не удалось открыть файл - выходим/##CHR(13)##//##CHR(10)##/IF ( fileHandle == -1 )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ СистемноеСообщение( );/##CHR(13)##//##CHR(10)##/ _ТЕКСТОШИБКИ = "Не удалось открыть файл ''" + ИмяФайла + "'' загрузки для ККМ ''" + ALLTRIM( name ) + "''";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ _ОШИБКАВЫПОЛНЕНИЯ = true;/##CHR(13)##//##CHR(10)##/ RETURN false;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///------ Первые три строки - заголовок файла, он нам не интересен /##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( fileHandle, "@" );/##CHR(13)##//##CHR(10)##/ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##/ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/КоличествоСтрок = ФайлКоличествоСтрок( fileHandle );/##CHR(13)##//##CHR(10)##/ДобавитьСообщение( "Количество строк в файле: " + КоличествоСтрок );/##CHR(13)##//##CHR(10)##/Индикатор( "Загрузка данных", КоличествоСтрок );/##CHR(13)##//##CHR(10)##/КоличествоСтрок = 0;/##CHR(13)##//##CHR(10)##/tranzDate = ""; // Дата транзакции/##CHR(13)##//##CHR(10)##/tranzTime = ""; // Время транзакции/##CHR(13)##//##CHR(10)##/foundTranz = false; // Признак того, что нашли транзакции/##CHR(13)##//##CHR(10)##/client = ""; // Код клиента из чека/##CHR(13)##//##CHR(10)##/maxTranzCount = 0; // Будем хранить максимальный номер транзакции/##CHR(13)##//##CHR(10)##/identif = 0;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Добавляем контекст со списком ФР и юридическими лицами, которые привязаны к ФР/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT fr_code, firm FROM " + СПИСОКФР, "СписокФР" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ПроверятьКОДФР = !ПУСТО( ЗАПРОС( "SELECT ex_code + fr_list FROM sprequipment WHERE code = ''" + КодОборудования + "''" ) );/##CHR(13)##//##CHR(10)##/ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП = ЗАПРОС( "SELECT f_sklfromwaregrp FROM sprequipment WHERE code = ''" + КодОборудования + "''" );/##CHR(13)##//##CHR(10)##/БРАТЬСКЛАДЫИЗГРУПП = СКЛАДЫИЗГРУПП OR ОБОРУДОВАНИЕ_СКЛАДЫИЗГРУПП;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/БылиТранзакцииПоФРВыбранномуВТО = FALSE;/##CHR(13)##//##CHR(10)##/tranzDateKeg = "";/##CHR(13)##//##CHR(10)##/tranzTimeKeg = "";/##CHR(13)##//##CHR(10)##/WHILE ( !ФайлКонецФайла( fileHandle ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ КоличествоСтрок++;/##CHR(13)##//##CHR(10)##/ if ( КоличествоСтрок % 10 == 0 ) Индикатор( КоличествоСтрок, "Обработано строк" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ string = ФайлПрочитать( fileHandle, "S" );/##CHR(13)##//##CHR(10)##/ //------ Если строка пустая - пропускаем ее/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( string ) ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Для соответствия номеров полей возвращаемым номерам слов - добавляем разделитель /##CHR(13)##//##CHR(10)##/ string = ";" + string;/##CHR(13)##//##CHR(10)##/ tranzCount = GetWord( string, ";", ";", 1 );/##CHR(13)##//##CHR(10)##/ tranzDate = GetWord( string, ";", ";", 2 );/##CHR(13)##//##CHR(10)##/ tranzTime = GetWord( string, ";", ";", 3 );/##CHR(13)##//##CHR(10)##/ tranzType = GetWord( string, ";", ";", 4 );/##CHR(13)##//##CHR(10)##/ POSNumber = VAL( GetWord( string, ";", ";", 5 ) );/##CHR(13)##//##CHR(10)##/ chequeNumber = GetWord( string, ";", ";", 6 );/##CHR(13)##//##CHR(10)##/ Seller = STR( VAL( GetWord( string, ";", ";", 7 ) ) );/##CHR(13)##//##CHR(10)##/ wareCode = GetWord( string, ";", ";", 8 );/##CHR(13)##//##CHR(10)##/ AspectsList = GetWord( string, ";", ";", 9 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ AspectValue1 = GetWord( "," + AspectsList, ",", 1 );/##CHR(13)##//##CHR(10)##/ AspectValue2 = GetWord( "," + AspectsList, ",", 2 );/##CHR(13)##//##CHR(10)##/ AspectValue3 = GetWord( "," + AspectsList, ",", 3 );/##CHR(13)##//##CHR(10)##/ AspectValue4 = GetWord( "," + AspectsList, ",", 4 );/##CHR(13)##//##CHR(10)##/ AspectValue5 = GetWord( "," + AspectsList, ",", 5 );/##CHR(13)##//##CHR(10)##/ Price = STRTRAN( GetWord( string, ";", 10 ), ",","." );/##CHR(13)##//##CHR(10)##/ Quantity = STRTRAN( GetWord( string, ";", 11 ), ",","." );/##CHR(13)##//##CHR(10)##/ chequeType = STR( VAL( GetWord( string, ";", 13 ) ) );/##CHR(13)##//##CHR(10)##/ ecrSession = GetWord( string, ";", 14 );/##CHR(13)##//##CHR(10)##/ PriceWD = STRTRAN( GetWord( string, ";", 15 ), ",","." );/##CHR(13)##//##CHR(10)##/ SummWD = STRTRAN( GetWord( string, ";", 16 ), ",","." );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ecrNumber = ALLTRIM( STR( VAL( GetWord( string, ";", 17 ) ) ) );/##CHR(13)##//##CHR(10)##/ wareMark = STRTRAN( GetWord( string, ";", 18 ), CHR(164), ";" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ sgtin = ALLTRIM( STRTRAN( GetWord( string, ";", 33 ), CHR(164), ";" ) );/##CHR(13)##//##CHR(10)##/ РазделительМарок = "¤"; //символ разделитель марок, который ожидается программой для случаев, когда в одной регистрации несколько марок с разделителем/##CHR(13)##//##CHR(10)##/ exmark = STRTRAN( GETWORD( string, ";", 34 ), ",", РазделительМарок );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ barcode = ЕСЛИ( !ПУСТО( exmark ), exmark, GetWord( string, ";", 19 ) );/##CHR(13)##//##CHR(10)##/ Summ = STRTRAN( GetWord( string, ";", 20 ), ",","." );/##CHR(13)##//##CHR(10)##/ currency = GetWord( string, ";", 21 );/##CHR(13)##//##CHR(10)##/ education = ЕСЛИ( !ПУСТО( VAL( GetWord( string, ";", 22 ) ) ), 1, 0 );/##CHR(13)##//##CHR(10)##/ dockIndCode = GetWord( string, ";", 23 );/##CHR(13)##//##CHR(10)##/ commentCode = GetWord( string, ";", 24 );/##CHR(13)##//##CHR(10)##/ universalNDOK = GetWord( string, ";", 26 );/##CHR(13)##//##CHR(10)##/ karta = "";/##CHR(13)##//##CHR(10)##/ documentClient = "";/##CHR(13)##//##CHR(10)##/ manager = GetWord( string, ";", 28 );/##CHR(13)##//##CHR(10)##/ warecode_org = warecode;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( INLIST( VAL( tranzType ), 5, 15, 6, 16, 7, 17, 8, 18, 75, 85, 76, 86, 77, 87, 78, 88, 35, /##CHR(13)##//##CHR(10)##/ 36, 37, 38, 40, 42, 55, 56, 57, 49, 45, 41, 43, 44 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Заменяем служебный символ на точку с запято/##CHR(13)##//##CHR(10)##/ karta = STRTRAN( warecode, CHR( 164 ), ";" );/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//* IF ( СЖАТЬПРОБЕЛЫ( СТРОКА( ЧИСЛО( warecode ) ) ) <> СЖАТЬПРОБЕЛЫ( warecode ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ warecode = "";/##CHR(13)##//##CHR(10)##/ warecode_org= "";/##CHR(13)##//##CHR(10)##/ }*//##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------Если операция открытия чека/##CHR(13)##//##CHR(10)##/ IF ( VAL( tranzType ) == 42 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //для постановки на кран запомним дату и время начала формирования операции, /##CHR(13)##//##CHR(10)##/ //т.к. xPOS3 не всегда возвращает дату и время для 11 транзакции в 27й операции/##CHR(13)##//##CHR(10)##/ IF ( VAL( chequeType ) == 27 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ tranzDateKeg = GetWord( string, ";", ";", 2 );/##CHR(13)##//##CHR(10)##/ tranzTimeKeg = GetWord( string, ";", ";", 3 );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Если операция закрытие чека/##CHR(13)##//##CHR(10)##/ IF ( VAL( tranzType ) == 55 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ SummWD = STRTRAN( GetWord( string, ";", 12 ), ",","." );/##CHR(13)##//##CHR(10)##/ documentClient = priceWD;/##CHR(13)##//##CHR(10)##/ priceWD = "";/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) AND VAL( documentClient ) != 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE code = (SELECT card FROM sprmclient WHERE dbo.fn_chartoint( code ) = " + STR( VAL( documentClient ) ) + ")" );/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( karta ) )/##CHR(13)##//##CHR(10)##/ karta = ЗАПРОС( "SELECT cardn FROM sprmcard WHERE client = " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ IF ( VAL( wareCode ) > 90000000 )/##CHR(13)##//##CHR(10)##/ wareCode = STR( VAL( warecode ) - 90000000 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Если транзакцию с полученным номером уже обрабатывали, то пропускаем строку/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT CASE WHEN EXISTS(SELECT * FROM "+ ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE id = " + STR( VAL( tranzCount ) ) + " AND posnumber = " + STR( posNumber ) +") /##CHR(13)##//##CHR(10)##/ THEN 1 ELSE 0 END " ) == 1 ) CONTINUE;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Определяем, входит ли текущий ФР в список обрабатываемых ФР/##CHR(13)##//##CHR(10)##/ IF ( ПроверятьКОДФР AND !Найти( "СписокФР", "СписокФР.fr_code == ''" + UPPER( ALLTRIM( ecrNumber ) ) + "''" ) ) CONTINUE;/##CHR(13)##//##CHR(10)##/ БылиТранзакцииПоФРВыбранномуВТО = TRUE;/##CHR(13)##//##CHR(10)##/ //-------- Запоминаем /##CHR(13)##//##CHR(10)##/ firm = СписокФР.firm;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //-------- Если транзакцию с полученным номером уже обрабатывали, то пропускаем строку/##CHR(13)##//##CHR(10)##/ IF ( ЗАПРОС( "SELECT CASE WHEN EXISTS(SELECT * FROM "+ ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE id = " + STR( VAL( tranzCount ) ) + " AND posnumber = " + STR( posNumber ) +") /##CHR(13)##//##CHR(10)##/ THEN 1 ELSE 0 END " ) == 1 ) CONTINUE;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ tranzCount = VAL( tranzCount );/##CHR(13)##//##CHR(10)##/ maxTranzCount = MAX( maxTranzCount, tranzCount );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ docCode = "";/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ nn = warecode;/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ kolp = VAL( Quantity );/##CHR(13)##//##CHR(10)##/ summasale = VAL( SummWD );/##CHR(13)##//##CHR(10)##/ summa = VAL( Summ );/##CHR(13)##//##CHR(10)##/ cena = VAL( Price );/##CHR(13)##//##CHR(10)##/ nnname = "";/##CHR(13)##//##CHR(10)##/ ed = "";/##CHR(13)##//##CHR(10)##/ kodn = "";/##CHR(13)##//##CHR(10)##/ client = "";/##CHR(13)##//##CHR(10)##/ summabn = 0.00;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Анализируем тип транзакции и в зависимости от него выполняем разные действия/##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие смены. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ //------- Операция - Z-отчет. Проставляем дату и время для всей смены./##CHR(13)##//##CHR(10)##/ IF ( ( tranzType == "61" AND ИСТОЧНИКДАТЫ == 3 ) OR ( tranzType == "63" AND ИСТОЧНИКДАТЫ == 4 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ date = CTOD( tranzDate + " " + tranzTime );/##CHR(13)##//##CHR(10)##/ IF ( ИСТОЧНИКДАТЫ == 3 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( date ) + "'' WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND fr_code= " + ecrNumber );/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - Закрытие чека. Проставляем код клиента./##CHR(13)##//##CHR(10)##/ IF ( tranzType == "55" AND VAL( documentClient ) <> 0 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------- Определяем код клиента по доп. коду и проставляем его для всего чека./##CHR(13)##//##CHR(10)##/ client = ЗАПРОС( "SELECT code FROM sprclient WHERE dbo.fn_chartoint( ex_code )= " + STR( VAL( documentClient ) ) );/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET client = ''" + client + "'' WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Округления /##CHR(13)##//##CHR(10)##/ IF ( tranzType == "55" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Необходимо рассчитать процент скидки/##CHR(13)##//##CHR(10)##/ СуммаЧека = ЗАПРОС( "SELECT SUM( summasale ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE " + ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND ecrsession = " + STR( VAL( ecrSession ) ) + " AND transtype IN ( 1, 2, 11, 12 ) ");/##CHR(13)##//##CHR(10)##/ IF ( ABS( СуммаЧека ) > ABS( VAL( SummWD ) ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Пересчитываем суммы в чеке/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summasale = summasale - " + СТРОКА( СуммаЧека - VAL( SummWD ), 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = /##CHR(13)##//##CHR(10)##/ (SELECT MIN( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE ecrsession = " + STR( VAL( ecrSession ) ) + " AND " +/##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) + " AND transtype IN ( 1, 2, 11, 12 ) )");/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Операция - отмена чека /##CHR(13)##//##CHR(10)##/ IF ( tranzType == "56" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ // Если данные содержат уникальный номер документа, то помечаем на удаление чек по этому номеру./##CHR(13)##//##CHR(10)##/ // Иначе просто по номеру чека/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET f_deleted = 1 WHERE " + /##CHR(13)##//##CHR(10)##/ ЕСЛИ( !EMPTY( universalNDOK ), "ndok = ''" + universalNDOK + "''", "chequeNumber = " + STR( VAL( chequeNumber ) ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- В транзакциях оплаты сумма записывается в поле 12/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "40" OR tranzType == "41" OR tranzType == "43" )/##CHR(13)##//##CHR(10)##/ Summa = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------- Безналичные оплаты/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "43" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( VAL( AspectsList ) > 1 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ Summabn = VAL( STRTRAN( GetWord( string, ";", 12 ),",","." ) );/##CHR(13)##//##CHR(10)##/ //------ Проставляем сумму безналичной оплаты у одной из записей о продаже/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET summabn = summabn + " + STR( summabn, 16, 2 ) + "/##CHR(13)##//##CHR(10)##/ WHERE identity_column = (SELECT MAX( identity_column ) FROM " + ИМЯТАБЛИЦЫ + " /##CHR(13)##//##CHR(10)##/ WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 ) AND fr_code= " + ecrNumber + " )");/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##/ // Отмечаем особым образом транзакции для отображения в документе в виде без/нала /##CHR(13)##//##CHR(10)##/ IF ( ПЕРЕМЕННАЯ("_ФРОНТОЛ_ДЕЛИТЬСТРОКИДКСПОВИДАМОПЛАТЫ", false ) )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET chequetype = " + VAL( aspectsList ) * 100 + " + chequetype WHERE chequeNumber = " + STR( VAL( chequeNumber ) ) + " AND transtype IN ( 1, 11, 12, 2 )");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //------- ПРОДАЖА/##CHR(13)##//##CHR(10)##/ IF ( tranzType == "1" OR tranzType == "11" OR tranzType == "2" OR tranzType == "12" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCodePredefined = IIF( chequeType <> "6" AND chequeType <> "14" AND chequeType <> "15" AND chequeType <> "16" AND chequeType <> "18", "008", "" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ОПРЕДЕЛЯТЬТИПДОКУМЕНТАПОФОРМЕОБМЕНА )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ docCode = IIF( !ПУСТО( docCodePredefined ), docCodePredefined, /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''18'', "046",/##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ2, dockIndCode ) > 0, "007", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ3, dockIndCode ) > 0, "001", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ4, dockIndCode ) > 0, "002", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ5, dockIndCode ) > 0, "003", /##CHR(13)##//##CHR(10)##/ IIF( AT( КОДФРОНТ6, dockIndCode ) > 0, "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''14'' OR chequeType == ''15'', "019", /##CHR(13)##//##CHR(10)##/ IIF( chequeType == ''16'', "007", "008" )))))))));/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //инвентаризация/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ2 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ2, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "007"; /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //приходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ3 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ3, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "001";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //расходная накладная/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ4 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ4, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "002";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //списание, оприходование/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ5 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ5, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "003";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //внутреннее перемещение/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( КОДФРОНТ6 ) AND EQUIPMENT.ККМ_ПроверитьКодДокумента( КОДФРОНТ6, dockIndCode ) ) /##CHR(13)##//##CHR(10)##/ docCode = "019";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если не определили по кодам документов, то ставим тип "ДКС"/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( docCode ) )/##CHR(13)##//##CHR(10)##/ docCode = "008";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем строки из документа, отличного от ДКС, то разделим их по номерам документов/##CHR(13)##//##CHR(10)##/ IF ( docCode <> "008" )/##CHR(13)##//##CHR(10)##/ docid = chequeNumber;/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ docid = 0;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ nnname = IIF( docCode <> "008", "Операция по свободной цене", "Свободная продажа");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ //------ Пытаемся сопоставить товар с выбранными разрезами/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Определяем код головного товара/##CHR(13)##//##CHR(10)##/ warecode = ЗАПРОС("SELECT code FROM sprres WHERE ISNULL(LTRIM(RTRIM(maincode)), '''')=''" + wareCode + "''");/##CHR(13)##//##CHR(10)##/ aspCond1 = IIF( !EMPTY( AspectValue1 ) AND AspectValue1 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 1 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue1 + ")", "");/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ aspCond2 = IIF( !EMPTY( AspectValue2 ) AND AspectValue2 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 2 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue2 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond3 = IIF( !EMPTY( AspectValue3 ) AND AspectValue3 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 3 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue3 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond4 = IIF( !EMPTY( AspectValue4 ) AND AspectValue4 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 4 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue4 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ aspCond5 = IIF( !EMPTY( AspectValue5 ) AND AspectValue5 <> "999999999",/##CHR(13)##//##CHR(10)##/ " AND EXISTS(SELECT * FROM sprres_gdlist /##CHR(13)##//##CHR(10)##/ INNER JOIN specdimcomb /##CHR(13)##//##CHR(10)##/ ON specdimcomb.dimcode = sprres_gdlist.d_code /##CHR(13)##//##CHR(10)##/ WHERE specdimcomb.code = sprres.d_code AND sprres_gdlist.f_num = 5 AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint(SUBSTRING(specdimcomb.value_, 4, 10)) = " + AspectValue5 + ")", "");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ nn = ЗАПРОС("SELECT sprres.maincode /##CHR(13)##//##CHR(10)##/ FROM sprres /##CHR(13)##//##CHR(10)##/ WHERE sprres.subcode= ''" + warecode + "'' " + aspCond1 + aspCond2 + aspCond3 + aspCond4 + aspCond5);/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ store_period = 0;/##CHR(13)##//##CHR(10)##/ //------ Если получилось установить код товара, то определяем остальные его параметры /##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( nn ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем настоящий nn из sprnn по maincode/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст( "SELECT s.code, s.cat, s.name, s.ed, s.kodn, s.weight, s.d_litr, s.ed_weight, /##CHR(13)##//##CHR(10)##/ s.edd_litr, ISNULL( d.sklad, '''' ) AS sklad, ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprres s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.group_ = d.code /##CHR(13)##//##CHR(10)##/ WHERE ISNULL( LTRIM( RTRIM( maincode ) ), '''' ) = ''" + ALLTRIM( nn ) + "''", "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "001", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ s_code = IIF( ALLTRIM( ТОВАРИНФО.cat ) == "002", ТОВАРИНФО.code, "" );/##CHR(13)##//##CHR(10)##/ weight_lab = IIF( !EMPTY( ТОВАРИНФО.weight ), ALLTRIM( STR( ТОВАРИНФО.weight, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.ed_weight), "" );/##CHR(13)##//##CHR(10)##/ volume_lab = IIF( !EMPTY( ТОВАРИНФО.d_litr), ALLTRIM( STR( ТОВАРИНФО.d_litr, 10, 3 ) ) + " " + ALLTRIM( ТОВАРИНФО.edd_litr ), "" );/##CHR(13)##//##CHR(10)##/ weivol_lab = IIF( !EMPTY( weight_lab ), weight_lab, volume_lab );/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ) + IIF( !EMPTY( weivol_lab ), " " + weivol_lab, "" ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ЕСЛИ( docCode == "046", "шт", ТОВАРИНФО.ed );/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR ( !БРАТЬСКЛАДЫИЗГРУПП && !f_sklfromwaregrp ), sklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Если пытались разобрать разрезы и не нашли нужного товара/##CHR(13)##//##CHR(10)##/ IF ( !EMPTY( warecode ) AND !EMPTY( aspectslist ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //------ Достаем начальное значение имени и прочие реквизиты из заголовочного товара/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT s.name, s.ed, s.kodn, ISNULL( d.sklad, '''' ) AS sklad, /##CHR(13)##//##CHR(10)##/ ISNULL( d.firm, '''' ) AS firm,/##CHR(13)##//##CHR(10)##/ s.store_period/##CHR(13)##//##CHR(10)##/ FROM sprnn s /##CHR(13)##//##CHR(10)##/ LEFT OUTER JOIN sprres_g d ON s.nngroup = d.code /##CHR(13)##//##CHR(10)##/ WHERE nn = ''" + ALLTRIM( warecode ) + "''", "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ ВыбратьКонтекст( "" ); // Чтобы контекст не мешал обращаться к переменным с тем же именем/##CHR(13)##//##CHR(10)##/ nn = "";/##CHR(13)##//##CHR(10)##/ s_code = "";/##CHR(13)##//##CHR(10)##/ nnname = IIF( !EMPTY( ТОВАРИНФО.name ), ALLTRIM( ТОВАРИНФО.name ), nnname );/##CHR(13)##//##CHR(10)##/ ed = ТОВАРИНФО.ed;/##CHR(13)##//##CHR(10)##/ kodn = ТОВАРИНФО.kodn;/##CHR(13)##//##CHR(10)##/ sklad = IIF( EMPTY( ТОВАРИНФО.sklad ) OR ( !БРАТЬСКЛАДЫИЗГРУПП && !f_sklfromwaregrp ), sklad, ТОВАРИНФО.sklad );/##CHR(13)##//##CHR(10)##/ firm = IIF( EMPTY( ТОВАРИНФО.firm ) OR !ФИРМЫИЗГРУПП, СПИСОКФР.firm, ТОВАРИНФО.firm );/##CHR(13)##//##CHR(10)##/ store_period = ТОВАРИНФО.store_period;/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "ТОВАРИНФО" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //------- Пытаемся сформировать список разрезов/##CHR(13)##//##CHR(10)##/ ДобавитьКонтекст("SELECT sprres_gdlist.f_num, spranalit.sprcode /##CHR(13)##//##CHR(10)##/ FROM sprnn /##CHR(13)##//##CHR(10)##/ INNER JOIN sprres_gdlist ON sprnn.nngroup = sprres_gdlist.code /##CHR(13)##//##CHR(10)##/ INNER JOIN sprdim ON sprres_gdlist.d_code = sprdim.code /##CHR(13)##//##CHR(10)##/ INNER JOIN spranalit ON spranalit.code = SUBSTRING(sprdim.type_, 16, 3) /##CHR(13)##//##CHR(10)##/ WHERE sprnn.nn= ''" + warecode + "'' ", "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ // Проходим по списку разрезов и формируем название/##CHR(13)##//##CHR(10)##/ WHILE ( !КонецКонтекста( "СПИСОКРАЗРЕЗОВ" ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ aspcode = IIF( f_num == 1, AspectValue1, IIF( f_num == 2, AspectValue2, IIF( f_num == 3, AspectValue3, /##CHR(13)##//##CHR(10)##/ IIF( f_num == 4, AspectValue4, IIF( f_num == 5, AspectValue5, "0" ) ) ) ) );/##CHR(13)##//##CHR(10)##/ aspname = ЗАПРОС( "SELECT name FROM sprmain WHERE scode= ''" + СПИСОКРАЗРЕЗОВ.sprcode + "'' AND /##CHR(13)##//##CHR(10)##/ dbo.fn_chartoint( code )= " + STR( VAL( aspcode ) ) );/##CHR(13)##//##CHR(10)##/ nnname = ALLTRIM( nnname ) + '' / '' + ALLTRIM( aspname );/##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ УдалитьКонтекст( "СПИСОКРАЗРЕЗОВ" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем постановку на кран, то необходимо сформировать документ для отправки в ЧЗ/##CHR(13)##//##CHR(10)##/ IF ( VAL( chequeType ) == 27 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ //если в транзакциях 11 не указаны дата и время, то берем из транзакции открытия чека/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( tranzDate ) )/##CHR(13)##//##CHR(10)##/ tranzDate = tranzDateKeg;/##CHR(13)##//##CHR(10)##/ IF ( ПУСТО( tranzTime ) )/##CHR(13)##//##CHR(10)##/ tranzTime = tranzTimeKeg;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //проверим длину возвращаемого КМ (xPOS3 возвращает неполный КМ разливного пива)/##CHR(13)##//##CHR(10)##/ //если длина менее 25 символов, то дополним КМ требуемыми идентификаторами/##CHR(13)##//##CHR(10)##/ IF ( LEN( sgtin ) < 25 )/##CHR(13)##//##CHR(10)##/ sgtin = "01" + ПОДСТРОКА( sgtin, 1, 14 ) + "21" + ПОДСТРОКА( sgtin, 15, 7 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ КомментарийПостановки = "Касса """ + ALLTRIM( ИМЯОБОРУДОВАНИЯ ) + """ | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzCount ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzDate ) + " | " + /##CHR(13)##//##CHR(10)##/ ALLTRIM( tranzTime ) + " | " + /##CHR(13)##//##CHR(10)##/ "док. № " + ALLTRIM( chequeNumber );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ ДатаВремяПостановки = CTOD( tranzDate + " " + tranzTime, 4 );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( store_period ) )/##CHR(13)##//##CHR(10)##/ expirationDate = ДОБАВИТЬДНИ( ДатаВремяПостановки, store_period );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ expirationDate = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ __SQL()/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ --добавим документ постановки на кран/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF NOT EXISTS( SELECT TOP 1 * FROM mark_reciept_spec spec/##CHR(13)##//##CHR(10)##/ INNER JOIN mark_reciept mark ON mark.identity_column = spec.ic/##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' /##CHR(13)##//##CHR(10)##/ AND mark.action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND mark.note = ''[[ КомментарийПостановки ]]'' ) /##CHR(13)##//##CHR(10)##/ BEGIN/##CHR(13)##//##CHR(10)##/ EXEC sp_rmk_markdoc ''[[ firm ]]'', ''[[ nn ]]'', ''[[ КомментарийПостановки ]]'', ''[[ STDF( sgtin ) ]]'', [[ kolp ]], ''[[ TTOC( expirationDate ) ]]'', ''beer''/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ --установим дату для созданного документа из транзакций и установим склад/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ UPDATE mark_reciept/##CHR(13)##//##CHR(10)##/ SET date = ''[[ TTOC( ДатаВремяПостановки ) ]]'',/##CHR(13)##//##CHR(10)##/ sklad = ''[[ sklad ]]''/##CHR(13)##//##CHR(10)##/ WHERE identity_column = ( SELECT TOP 1 ic FROM mark_reciept_spec spec /##CHR(13)##//##CHR(10)##/ WHERE CONVERT( varchar(150), spec.mark ) = ''[[ STDF( sgtin ) ]]'' )/##CHR(13)##//##CHR(10)##/ AND action = ''TAP'' /##CHR(13)##//##CHR(10)##/ AND note = ''[[ КомментарийПостановки ]]''/##CHR(13)##//##CHR(10)##/ END /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ SQLERROR/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ СООБЩЕНИЕ( "Ошибка при записи документа ""Постановка на кран"" с номером " + /##CHR(13)##//##CHR(10)##/ chequeNumber + " от " + tranzDate + " " + tranzTime + CHR(13) + CHR(10) +/##CHR(13)##//##CHR(10)##/ "Описание ошибки: " + _ERRORDESCRIPTION, "Загрузка Постановки на кран" ); /##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ //обнуляем дату и время операции постановки на кран/##CHR(13)##//##CHR(10)##/ tranzDateKeg = "";/##CHR(13)##//##CHR(10)##/ tranzTimeKeg = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ } /##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ sklad_d = "";/##CHR(13)##//##CHR(10)##/ // Теперь добавляем запись в таблицу ИМЯТАБЛИЦЫ/##CHR(13)##//##CHR(10)##/ IF ( docCode == "019" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ sklad_d = sklad;/##CHR(13)##//##CHR(10)##/ sklad = "";/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ //если загружаем операцию постановки на кран (27) или снятия с крана (28), то пропускаем их загрузку в таблицу/##CHR(13)##//##CHR(10)##/ IF ( ВСПИСКЕ( VAL( chequeType ), 27, 28 ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/ CONTINUE;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ // Теперь добавляем запись в таблицу ИМЯТАБЛИЦЫ/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "INSERT INTO " + ИМЯТАБЛИЦЫ + "(id, date, transtype, posnumber, doccode, seller, waremark, chequeNumber, chequetype, /##CHR(13)##//##CHR(10)##/ ecrsession, infostr, ecrnumber, ndok, docid, note, inouttype, nn, s_code, nnname, ed, /##CHR(13)##//##CHR(10)##/ kodn, client, contract, kolp, barcode, gtd, ksnum, summasale, summabn, summa, cena, /##CHR(13)##//##CHR(10)##/ firm, sklad, mol, sklad_d, mol_d, kskod, fr_code, manager, warecode, aspectvalue1 )/##CHR(13)##//##CHR(10)##/ VALUES ( /##CHR(13)##//##CHR(10)##/ " + STR( tranzCount ) + ", ''" + TTOC( date ) + "'', " + tranzType + ", " + STR( posNumber ) + ", ''" + doccode + "'',/##CHR(13)##//##CHR(10)##/ " + seller + ", ''" + STDF( wareMark, 250 ) + "'', " + chequeNumber + ", " + chequeType + ", " + STR( VAL( ecrSession ) ) + ", ''" + karta + "'',/##CHR(13)##//##CHR(10)##/ " + ecrNumber + ", ''" + universalNDOK + "'', 0, '''', '''', ''" + nn + "'', ''" + s_code + "'', ''" + STDF( nnname, 250 ) + "'',/##CHR(13)##//##CHR(10)##/ ''" + ed + "'', ''" + kodn + "'', ''" + client + "'', '''', " + STR( kolp, 16, 3 ) + ", ''" + STDF( barcode ) + "'', '''', /##CHR(13)##//##CHR(10)##/ " + STR( VAL( ecrSession ) ) + ", " + STR( summasale, 16, 3 ) + ", " + STR( summabn, 16 ,3 ) + ", " + STR( summa, 16 ,3 ) + ",/##CHR(13)##//##CHR(10)##/ " + STR( cena, 16 ,3 ) + ", ''" + firm + "'', ''" + sklad + "'', '''', '''', '''', ''" + kskod + "'', " + ecrNumber + ", ''" + manager + "'',/##CHR(13)##//##CHR(10)##/ ''" + warecode_org + "'', " + STR( VAL( AspectValue1 ) ) + " )" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ foundTranz = true;/##CHR(13)##//##CHR(10)##/ processCount++;/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если указана конкретная дата для создания документов, то используем ее/##CHR(13)##//##CHR(10)##///IF ( ИСТОЧНИКДАТЫ == 2 )/##CHR(13)##//##CHR(10)##/// ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET date = ''" + TTOC( ДАТАДОКУМЕНТОВ ) + "''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##///------- Если выбран вариант загрузки по дате закрытия смены, /##CHR(13)##//##CHR(10)##///------- и в списке транзакций остались транзакции без z_date, то /##CHR(13)##//##CHR(10)##///------- таким транзакциям проставляем текущую дату. Иначе, будет создано много документов/##CHR(13)##//##CHR(10)##/IF ( ИСТОЧНИКДАТЫ == 3 OR ИСТОЧНИКДАТЫ == 4 )/##CHR(13)##//##CHR(10)##/ ЗАПРОС( "UPDATE " + ИМЯТАБЛИЦЫ + " SET z_date = ''" + TTOC( ДатаВремя( ) ) + "'' WHERE z_date= ''''" );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/Индикатор( );/##CHR(13)##//##CHR(10)##/СистемноеСообщение( );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Закрываем файл, удаляем последний контекст и убираем лишние окна/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокФР" );/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( fileHandle );/##CHR(13)##//##CHR(10)##/// Ждем секунду, чтобы файл действительно закрылся. /##CHR(13)##//##CHR(10)##/Ожидание( 1000 );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/ ФайлПереименовать( ИмяФайла, ИмяФайла + STRTRAN( STRTRAN( STRTRAN( TTOC( ДатаВремя( ), 7 ), ".","" ), ":", "" ), " ", "" ) + ".bak" );/##CHR(13)##//##CHR(10)##/ELSE/##CHR(13)##//##CHR(10)##/ ФАЙЛУДАЛИТЬ( ИмяФайла );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/IF ( !БылиТранзакцииПоФРВыбранномуВТО ) MessageBox("В файле не обнаружены транзакции по ФР, указанным в карточке ТО");/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',248.00000000,'//Имя файла "флага"./##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения имени файла "флага"./##CHR(13)##//##CHR(10)##///Обработка должна вернуть стороку, содержащую имя файла "флага"./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Если производится автоматическая загрузка службой, то читаем альтернативные параметры имен файлов/##CHR(13)##//##CHR(10)##/IF ( !_АЛЬТЕРНАТИВНЫЕПАРАМЕТРЫ OR ТИП( "АВТОМАТИЧЕСКАЯЗАГРУЗКА" ) == "U" )/##CHR(13)##//##CHR(10)##/ АВТОМАТИЧЕСКАЯЗАГРУЗКА = false;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/РучнойОбмен = f_fileflag;/##CHR(13)##//##CHR(10)##/ИмяФайлаФлага = path_flag_in;/##CHR(13)##//##CHR(10)##/IF ( АВТОМАТИЧЕСКАЯЗАГРУЗКА )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##/ path_flag_in_alter = ЗАПРОС( "SELECT path_flag_in_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "'' AND path_in_alter <> ''''" );/##CHR(13)##//##CHR(10)##/ IF ( !ПУСТО( path_flag_in_alter ) )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ ИмяФайлаФлага = path_flag_in_alter;/##CHR(13)##//##CHR(10)##/ РучнойОбмен = ЗАПРОС( "SELECT f_fileflag_alter FROM sprequipment WHERE code = ''" + КОДОБОРУДОВАНИЯ + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/RETURN ЕСЛИ( !РучнойОбмен, ИмяФайлаФлага, "" );',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',249.00000000,'//Файловый обмен?/##CHR(13)##//##CHR(10)##///Параметры - /##CHR(13)##//##CHR(10)##///КодОборудования строка. Код ККМ в справочнике оборудования./##CHR(13)##//##CHR(10)##///Обработка вызывается для определения является ли обмен файловым обменом./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если обмен производится посредством файлов, иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',270.00000000,'//Текст ошибки драйвера ККМ. /##CHR(13)##//##CHR(10)##///Обработка должна вернуть строку, содержащую описание последней возникшей ошибки при работе с ККМ./##CHR(13)##//##CHR(10)##/RETURN _ТЕКСТОШИБКИ;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',271.00000000,'//Последняя ошибка драйвера ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть число целое - код последней ошибки драйвера ККМ./##CHR(13)##//##CHR(10)##/RETURN _КОДОШИБКИ;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',272.00000000,'//Признак наличия ошибки ККМ./##CHR(13)##//##CHR(10)##///Обработка должна вернуть ИСТИНУ, если в результате выполнения последней операции с ККМ возникла ошибка. Иначе ЛОЖЬ./##CHR(13)##//##CHR(10)##/RETURN !EMPTY( _КОДОШИБКИ );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',218.00000000,'//Выгрузка папок скидок в ККМ. не используется в СЕ/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками скидок/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + ПАПКИСКИДОК, "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDDISCRATES" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "ПапкиСкидок" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, STR( ic + 1000000000 ) + ";" + LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 ) + ";" +/##CHR(13)##//##CHR(10)##/// LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 ) + ";" + /##CHR(13)##//##CHR(10)##/// IIF( parent == 0, "0", ALLTRIM( STR( ABS( parent ) + 1000000000 ) )) + ";1;" +/##CHR(13)##//##CHR(10)##/// IIF( union_type > 0, ALLTRIM( STR( union_type - 1) ), "" ) + ";;;;;;;" );/##CHR(13)##//##CHR(10)##////##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "ПапкиСкидок" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',227.00000000,'//Завершение выгрузки скидок в ККМ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Просто закрываем файл/##CHR(13)##//##CHR(10)##/ФайлЗакрыть( ДескрипторФайла );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',219.00000000,'//Выгрузка скидок в ККМ. В CE не используется/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы со скидок/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + СКИДКИ, "СписокСкидок" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокСкидок" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDDISCRATES" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокСкидок" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mParent = ALLTRIM( STR( IIF( EMPTY( parent ), 0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/// mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/// mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1) ), "" );/##CHR(13)##//##CHR(10)##/// mUnion_type = ALLTRIM( STR( union_type ) );/##CHR(13)##//##CHR(10)##/// mF_auto = IIF( f_auto, "2", "1" );/##CHR(13)##//##CHR(10)##/// mVmin_exists = IIF( !EMPTY( value_min ), "1", "0" );/##CHR(13)##//##CHR(10)##/// mVmax_exists = IIF( !EMPTY( value_max ), "1", "0" );/##CHR(13)##//##CHR(10)##/// mValue_min = ALLTRIM( LEFT( STRTRAN( value_min, ";", " " ), 100 ) );/##CHR(13)##//##CHR(10)##/// mValue_max = ALLTRIM( LEFT( STRTRAN( value_max, ";", " " ), 100 ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/// mDsc_value = Вычислить( mValue );/##CHR(13)##//##CHR(10)##/// ELSE/##CHR(13)##//##CHR(10)##/// mDsc_value = mValue;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Строка = code + ";" + mName + ";" + mCtext + ";" + mParent + ";0;" + mUnion_type + ";" +/##CHR(13)##//##CHR(10)##/// mVtype + ";" + mDsc_value + ";" + mF_auto + ";" + mType_ + ";" + mVmin_exists + ";" + /##CHR(13)##//##CHR(10)##/// mValue_min + ";" + mVmax_exists + ";" + mValue_min;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокСкидок" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',220.00000000,'//Выгрузка условий скидок в ККМ./##CHR(13)##//##CHR(10)##//*/##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы с папками скидок/##CHR(13)##//##CHR(10)##/ДобавитьКонтекст( "SELECT * FROM " + УСЛОВИЯ, "СписокУсловий" );/##CHR(13)##//##CHR(10)##/ВыбратьКонтекст( "СписокУсловий" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления скидок (команда одна на скидки и на папки)/##CHR(13)##//##CHR(10)##/ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDAUTODISCCONDS" );/##CHR(13)##//##CHR(10)##/WHILE ( !КонецКонтекста( "СписокУсловий" ) )/##CHR(13)##//##CHR(10)##/{/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mParent = ALLTRIM( STR( IIF( EMPTY( parent ),0, ABS( parent ) + 1000000000 ) ) );/##CHR(13)##//##CHR(10)##/ mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/ mName = LEFT( ALLTRIM( STRTRAN( name, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mCtext = LEFT( ALLTRIM( STRTRAN( ctext, ";", " " ) ), 100 );/##CHR(13)##//##CHR(10)##/ mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/ mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/ mDsc_value = Вычислить( mValue );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mDsc_value = mValue;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ mStart_date = "";/##CHR(13)##//##CHR(10)##/ mEnd_date = "";/##CHR(13)##//##CHR(10)##/ mCdate_day = cdate_day;/##CHR(13)##//##CHR(10)##/ mCdate_month = cdate_month;/##CHR(13)##//##CHR(10)##/ mCdate_code = cdate_code;/##CHR(13)##//##CHR(10)##/ mCdate_day2 = 0;/##CHR(13)##//##CHR(10)##/ mCdate_month2 = 0;/##CHR(13)##//##CHR(10)##/ IF ( ТИП( "cdate_month2" ) != "U" )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mCdate_day2 = cdate_day2;/##CHR(13)##//##CHR(10)##/ mCdate_month2 = cdate_month2;/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 3 OR cdate_type == 4 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 3 )/##CHR(13)##//##CHR(10)##/ {/##CHR(13)##//##CHR(10)##/ mCdate_day = ЗАПРОС( "SELECT day FROM sprholidays WHERE code= ''" + mСdate_code + "''" );/##CHR(13)##//##CHR(10)##/ mCdate_month = ЗАПРОС( "SELECT month FROM sprholidays WHERE code= ''" + mСdate_code + "''" );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ // Берем начальную дату из полей cdate_month, cdate_day/##CHR(13)##//##CHR(10)##/ mStart_date = DTOC( CTOD( ALLTRIM( STR( mCdate_day ) ) + "/" + ALLTRIM( STR( mCdate_month ) ) + "/" + ALLTRIM( STR( YEAR( DATE( ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ IF ( cdate_type == 4 AND mCdate_day2 > 0 AND mCdate_month2 > 0 )/##CHR(13)##//##CHR(10)##/ mEnd_date = DTOC( CTOD( ALLTRIM( STR( mCdate_day2 ) ) + "/" + ALLTRIM( STR( mCdate_month2 ) ) + "/" + ALLTRIM( STR( YEAR( DATE( ) ) + ЕСЛИ( mCdate_month2 < mCdate_month, 1, 0 ) ) ) ) );/##CHR(13)##//##CHR(10)##/ ELSE/##CHR(13)##//##CHR(10)##/ mEnd_date = DTOC( CTOD( ALLTRIM( STR( mCdate_day ) ) + "/" + ALLTRIM( STR( mCdate_month ) ) + "/" + ALLTRIM( STR( YEAR( DATE( ) ) ) ) ) );/##CHR(13)##//##CHR(10)##/ }/##CHR(13)##//##CHR(10)##/ mTime_min = IIF( !EMPTY( time_min ), ALLTRIM( time_min ), "" );/##CHR(13)##//##CHR(10)##/ mTime_max = IIF( !EMPTY( time_max ), ALLTRIM( time_max ), "" );/##CHR(13)##//##CHR(10)##/ mWday_min = IIF( !EMPTY( wday_min ) OR !EMPTY( wday_max ), ALLTRIM( STR( wday_min - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mWday_max = IIF( !EMPTY( wday_min ) OR !EMPTY( wday_max ), ALLTRIM( STR( wday_max - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/ mKolp_min = IIF( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ), ALLTRIM( STR( kolp_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mKolp_max = IIF( !EMPTY( kolp_min ) OR !EMPTY( kolp_max ), ALLTRIM( STR( kolp_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mSumma_min = IIF( !EMPTY( summa_min ) OR !EMPTY( summa_max ), ALLTRIM( STR( summa_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mSumma_max = IIF( !EMPTY( summa_min ) OR !EMPTY( summa_max ), ALLTRIM( STR( summa_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCsumma_min = IIF( !EMPTY( csumma_min ) OR !EMPTY( csumma_max ), ALLTRIM( STR( csumma_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCsumma_max = IIF( !EMPTY( csumma_min ) OR !EMPTY( csumma_max ), ALLTRIM( STR( csumma_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mPrefix_min = IIF( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ), prefix_min, "" );/##CHR(13)##//##CHR(10)##/ mPrefix_max = IIF( !EMPTY( prefix_min ) OR !EMPTY( prefix_max ), prefix_max, "" );/##CHR(13)##//##CHR(10)##/ mCena_min = IIF( !EMPTY( cena_min ) OR !EMPTY( cena_max ), ALLTRIM( STR( cena_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCena_max = IIF( !EMPTY( cena_min ) OR !EMPTY( cena_max ), ALLTRIM( STR( cena_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCkolp_min = IIF( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ), ALLTRIM( STR( ckolp_min, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mCkolp_max = IIF( !EMPTY( ckolp_min ) OR !EMPTY( ckolp_max ), ALLTRIM( STR( ckolp_max, 10, 4 ) ), "" );/##CHR(13)##//##CHR(10)##/ mTmc_id = "";/##CHR(13)##//##CHR(10)##/ mTmckolp_min = "";/##CHR(13)##//##CHR(10)##/ mTmckolp_max = "";/##CHR(13)##//##CHR(10)##/ mTmcsumma_min = "";/##CHR(13)##//##CHR(10)##/ mTmcsumma_max = "";/##CHR(13)##//##CHR(10)##/ mCard_state = ALLTRIM( STR( card_state ) );/##CHR(13)##//##CHR(10)##/ mCardlen_min = "";/##CHR(13)##//##CHR(10)##/ mCardlen_max = "";/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ Строка = mParent + ";" + mCode + ";" + mName + ";" + mCtext + ";" + mVtype + ";" + /##CHR(13)##//##CHR(10)##/ mDsc_value + ";" + mStart_date + ";" + mEnd_date + ";;" + mTime_min + ";" +/##CHR(13)##//##CHR(10)##/ mTime_max + ";;" + mWday_min + ";" + mWday_max + ";;" + mKolp_min + ";" +/##CHR(13)##//##CHR(10)##/ mKolp_max + ";;" + mSumma_min + ";" + mSumma_max + ";;" + mCsumma_min + ";" +/##CHR(13)##//##CHR(10)##/ mCsumma_max + ";;" + mPrefix_min + ";" + mPrefix_max + ";;" + mCena_min + ";" +/##CHR(13)##//##CHR(10)##/ mCena_max + ";;" + mCkolp_min + ";" + mCkolp_max + ";;;" + mTmckolp_min + ";" + /##CHR(13)##//##CHR(10)##/ mTmckolp_max + ";;" + mTmcsumma_min + ";" + mTmcsumma_max + ";;" + mCard_state + ";" +/##CHR(13)##//##CHR(10)##/ mCardlen_min + ";" + mCardlen_max + ";;" + mType_ + ";" + mCode;/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/ SKIP( );/##CHR(13)##//##CHR(10)##/}/##CHR(13)##//##CHR(10)##/УдалитьКонтекст( "СписокУсловий" );*//##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO speceqprofiles (CODE,ACTION_ID,ACTION_SCRIPT,F_CHECK,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('----------',222.00000000,'//Выгрузка дисконтных карт в ККМ не используется в СЕ./##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// Выбираем данные из временной таблицы со списком карт/##CHR(13)##//##CHR(10)##///ДобавитьКонтекст( "SELECT * FROM " + КАРТЫ, "СписокКарт" );/##CHR(13)##//##CHR(10)##///ВыбратьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/// Добавляем в файл команду добавления карт /##CHR(13)##//##CHR(10)##///ФайлЗаписатьСтроку( ДескрипторФайла, "$$$ADDCCARDDISCS" );/##CHR(13)##//##CHR(10)##///WHILE ( !КонецКонтекста( "СписокКарт" ) )/##CHR(13)##//##CHR(10)##///{/##CHR(13)##//##CHR(10)##/// mCode = ALLTRIM( STR( VAL( code ) ) );/##CHR(13)##//##CHR(10)##/// mParent = IIF( EMPTY( card_type ), "1", ALLTRIM( card_type ) );/##CHR(13)##//##CHR(10)##/// mState = IIF( block, "0", "1" );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// mVtype = IIF( vtype > 0, ALLTRIM( STR( vtype - 1 ) ), "" );/##CHR(13)##//##CHR(10)##/// mType_ = IIF( type_ == 1, "1", "0" );/##CHR(13)##//##CHR(10)##/// mValue = ALLTRIM( value );/##CHR(13)##//##CHR(10)##/// mCard_type = ALLTRIM( card_type );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/ // Обороты по карте и количество посещений расчитываются системой перед началом выгрузки/##CHR(13)##//##CHR(10)##/// mCardSaldo = ALLTRIM( STR( saldo, 16, 2 ) );/##CHR(13)##//##CHR(10)##/// mCardCounter = ALLTRIM( STR( counter ) );/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// IF ( f_evaluate )/##CHR(13)##//##CHR(10)##/// mDsc_value = Вычислить( mValue, "C" );/##CHR(13)##//##CHR(10)##/// ELSE/##CHR(13)##//##CHR(10)##/// mDsc_value = mValue;/##CHR(13)##//##CHR(10)##/ /##CHR(13)##//##CHR(10)##/// mCardn = cardn;/##CHR(13)##//##CHR(10)##/// mStart_date = IIF( EMPTY( str_date ), "", DTOC( str_date ) );/##CHR(13)##//##CHR(10)##/// mEnd_date = IIF( EMPTY( end_date ), "", DTOC( end_date ) );/##CHR(13)##//##CHR(10)##/ // Формируем строку для записи в файл/##CHR(13)##//##CHR(10)##/// Строка = mCode + ";" + mParent + ";" + mCardn + ";" + mStart_date + ";" + mEnd_date + ";" +/##CHR(13)##//##CHR(10)##/// mState + ";" + mVtype + ";" + mDsc_value + ";" + mType_ + ";;;;;;;;;;;";/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// ФайлЗаписатьСтроку( ДескрипторФайла, Строка );/##CHR(13)##//##CHR(10)##//##CHR(13)##//##CHR(10)##/// SKIP( );/##CHR(13)##//##CHR(10)##///}/##CHR(13)##//##CHR(10)##///УдалитьКонтекст( "СписокКарт" );/##CHR(13)##//##CHR(10)##/RETURN true;',0,0,0,0,'04.04.2024 11:22:58') #command INSERT INTO spreqprofiles (CODE,EX_CODE,NAME,TYPE,PORT,NOTE,PARENT,POSORDER,NOTAVAIL,MAINDB,MAINIC,CACCESS,TACCESS,FOLDER,RID,FARC,UPDATED,RECEIVED,EDIT_DAT) VALUES ('','','Обмен данными с Фронтол XPos 3 (вскрытие тары)','ККМ',0.00000000,'Профиль обмена с программным обеспечением Frontol xPOS 3.11.4 и выше. Совместим с Айтида, начиная с версии 4.5.0. Поддерживает выгрузку мерного алкоголя двумя карточками: одна карточка товара с алкопризнаками для вскрытия, вторая - обычный товар для',0.00000000,7611.00000000,0,'',0.00000000,'','',0,'69EB87ED-931A-4AAD-98D3-F30C910B3E1D',0,1,0,'04.04.2024 11:22:58')