УРМ и УСЗН

Все вопросы по УРМ
Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

УРМ и УСЗН

Сообщение Val » 01.06.2007 11:16

Было письмо насчет приема от УСЗН пп в электронном виде.
Я попробовал, макрос подкорреткировать пришлось, вроде грузится.
Но зачем было письмо? У нас вроде в договоре нет пункта насчет электронного вида пп, нас УСЗН может послать (они против предоставления пп в электронном виде).
Кто работает уже, кто в курсе?

Аватара пользователя
Vital
старший сотрудник
старший сотрудник
Сообщения: 253
Зарегистрирован: 10.06.2004 14:22
Откуда: Otradnaya

Сообщение Vital » 01.06.2007 17:23

Тоже не понял письма. А макросом подельться можешь? Я тоже хочу попробовать

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Сообщение Val » 04.06.2007 10:01

ты сначала попробуй оригинальный макрос. он в урме есть у всех.
я вносил изменения на свой страх и риск. проверим - выложу.

Аватара пользователя
Vital
старший сотрудник
старший сотрудник
Сообщения: 253
Зарегистрирован: 10.06.2004 14:22
Откуда: Otradnaya

Сообщение Vital » 04.06.2007 10:48

У тебя соцзащита на чем работает? У меня на Талисмане, и я не знаю с какой стороны подойти

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Сообщение Val » 05.06.2007 08:13

C большинством краевых вроде решилось.
УСЗН на Талисмане, у них есть экспорт в формат УФК 2006.1. У меня он после небольшой дороботки начал импортироваться.
Остальные (1С) вроде тоже могут в этом формате давать.

Аватара пользователя
BVG
сотрудник
сотрудник
Сообщения: 81
Зарегистрирован: 26.06.2004 09:54
Откуда: Успенский район

Сообщение BVG » 05.06.2007 11:44

У нас в УСЗН из Талисмана есть даже выгрузка "Выгрузка в УРМ"
Файл выгружается в XML формате. в УРМ загружается через импорт в формате ПАРУС. работают оба варианта Но вручную правок хватает

Аватара пользователя
K_@ndrey
старший сотрудник
старший сотрудник
Сообщения: 271
Зарегистрирован: 03.08.2004 15:23
Откуда: Тимашевский район
Контактная информация:

Сообщение K_@ndrey » 19.06.2007 13:50

Объясните мне, как талисман сопровождает свое ПО? Дело в том, что я лично ходил в УСЗН, и не нашел там выгрузки вообще никакой. Просьба разузнать поподробнее как ваши УСЗН это делают?

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Сообщение Val » 19.06.2007 14:45

Функция для распознавания доп классификаторов при импорте пп

// найти значение длина_л следующеее за имя_л в текст_л длиной длина_л
// например из "фы44втс020100пал66опп" выделить 020100 идущее за "тс"
функция РаспознатьДопКлассификаторы(текст_л : Строка; длина_л : целое; имя_л : строка) : целое;
переменные
поз_л, флаг_л : целое;
буф_л : строка;
классификатор_л : целое;
начало
поз_л := 1;
флаг_л := 1;
буф_л := текст_л;
пока флаг_л делать
начало
буф_л := подстрока(буф_л,поз_л,длина(буф_л) - поз_л + 1);
поз_л := Позиция(имя_л,прописные(буф_л));
если поз_л<>0 тогда
начало
классификатор_л := строкавцелое(Подстрока(буф_л,поз_л+2,длина_л));
поз_л := поз_л + 2;
если классификатор_л = 0 тогда флаг_л := 1 иначе флаг_л := 0;
конец
иначе
начало
классификатор_л := 0;
флаг_л := 0;
конец;
конец;
если классификатор_л < 0 или классификатор_л > 99999999 тогда классификатор_л := 0;
результат := классификатор_л;
конец;

..................................
// вызовы
типсредств := РаспознатьДопКлассификаторы(Т.стр(32),6,"ТС");
мероприятие := РаспознатьДопКлассификаторы(Т.стр(32),6,"МЕ");
субкэср := РаспознатьДопКлассификаторы(Т.стр(32),7,"СК");
бо := РаспознатьДопКлассификаторы(Т.стр(32),9,"БО");
если бо = 0 тогда бо := РаспознатьДопКлассификаторы(Т.стр(32),9,"УН");
..........................................
// присваивание
//-----------------------------------------------------------------
если типсредств = 0 тогда типсредств := 10100;
Деталь.Поле("SourceMeansTypeCls").КакСтрока := типсредств;
Деталь.Поле("SourceFactCLS").КакСтрока := мероприятие;
Деталь.Поле("BuhOperationCls").КакСтрока := "01601";
Деталь.Поле("SourceFinTypeCls").КакСтрока := "100";
Деталь.Поле("SourceSubKESR").КакСтрока := субкэср;
если бо<>0 тогда Деталь.Поле("SourcePromise").КакСтрока := бо;
//-----------------------------------------------------------------
[/i]

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Сообщение Val » 19.06.2007 14:49

функция ЗакачатьПлательщика(Т : Текст; Плательщик : СтатическиеДанные);
...................................
//---------------------------------------------------
Колво := Колво + 1;
ИдСчета := Т.Стр(10);
//---------------------------------------------------
...................................
пришлось вставить т.к. оригинальное распознавание лс не работало.

и еще пришлось убрать при поиске организации кусок который отвечал за случай, когда организация в УФК. у меня он не срабатывал.

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Сообщение Val » 19.06.2007 14:50

Нашим УСЗН сделала (установила) выгрузку в формат УФК контора которая их обслуживает. Сомневаюсь что они сами писали выгрузку.

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Re: УРМ и УСЗН

Сообщение Val » 10.06.2008 15:56

Я уже не занимаюсь импортом, выкладывают то что было на конец года.
там где менял вставлял "val".
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Alf
зам. управляющего
зам. управляющего
Сообщения: 674
Зарегистрирован: 25.06.2004 09:40
Откуда: Щербиновский
Контактная информация:

Re: УРМ и УСЗН

Сообщение Alf » 07.04.2009 14:44

Импрот подправленый для формата ФК200601, распознает НДС, Тип средств, Мероприятие из назначения платежа
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Re: УРМ и УСЗН

Сообщение Val » 13.04.2009 13:54

еще в тестировании
чуть под себя переделал
1. распознавание КД
2. установку типа классификации
4. вид платежа
5. проверка 4 цифры лс и р/с (типа бюджетный лс должен соответствовать бюджетному рс и т.д.)
6. удаление (02...)
7. удаление классификации в скобках
8. ставит бухоперацию 3 если тс=бюджет, 501 если тс=внебюджет или временные, 511 если есть КД
не работал вывод в лог, пришлось объявить переменную вот так:
Лог := Объект(Коллекция.Значение("Лог"));

Код: Выделить всё

// делал Коля Щербиновский ФУ 07042009
// переделал под себя, Val, Ейский район, 10042009
включить "УРМ\Ресурсы\Библиотеки\LibRU.lib";
включить "УРМ\Ресурсы\Макросы\Импорт\Вспомогательные.abl";
//включить "УРМ\Ресурсы\Макросы\КИ\ПоддержкаСправочников";
включить "УРМ\Ресурсы\Библиотеки\Reports.lib";
включить "\Библиотеки\ModalFormEx.lib";
включить "\Библиотеки\Documents.lib";
  включить "\Библиотеки\HandBookModal.lib";


событие(Коллекция : IVariables): целое;

//-----------------------------------------------------------------------------------------------------
переменные
 КонтрольНДС : целое;
 КонтрольТипСредств : целое;
 КонтрольМероприятие : целое;
 КонтрольКД : целое;
 ТипСредствПер : строка;
  Заголовок, Деталь, Плательщик, Получатель : СтатическиеДанные;
  Лог : Текст;                               
  Подробно : целое;
  СчД : целое;
  КД : строка;



функция ВыбратьКлассификаторИзСправочника2(ТипСправочника: строка): строка;
переменные
  СпрКлс : IHandBookCollection;
  КодКлс : строка;
начало
  попытка
    если не ПолучитьИнтерфейс(_IHandBookCollection, СпрКлс) тогда
      ВызватьОшибку("Не удается получить интерфейс справочника");
     
    если не СпрКлс.ShowModalCode(ТипСправочника, 0, '', КодКлс) тогда    результат :=0 иначе   результат := КодКлс;
  неудача
    ВызватьОшибку("Справочник классификаторов недоступен. Ошибка: " + ПоследняяОшибка);
  конец;
конец;

// Комментарий
функция проверитьсимвол(стр : строка) : целое;
начало
        если стр = "1" или стр = "2" или стр="3" или стр = "4" или стр = "5" или стр="6" или стр = "7" или стр = "7" или стр="8" или стр = "9" или стр = "0" или стр=" " тогда
                результат := 1
        иначе результат :=0;       
конец;

//-----------------------------------------------------------------------------------------------------
функция получитьКлассификатор(Маркер:строка;Назначение_поле : IField; ДлинаКлассификатора : целое; данные : статическиеданные; поле : строка; тип : строка; Контроль : целое) : Целое;
переменные
индекс : целое;
индекс2 : целое;
знач : строка;
назн2 : строка;
маркер2 : строка;
флаг_после : целое;
начало
        назн2 := строчные(Назначение_поле.КакСтрока);
        маркер2 := строчные(Маркер);   
             
        если Контроль = 0 тогда
        начало
                индекс := Позиция(маркер2,назн2);
                если индекс <> 0 тогда
                начало
                        //  и проверитьсимвол(Подстрока(назн2, Позиция(маркер2, назн2) + длина(маркер2),1))
                        если Подстрока(назн2,позиция(маркер2,назн2)+длина(маркер2),1) = " " тогда маркер2 := маркер2 + " ";
                        знач := УбратьПробелы(Подстрока(назн2, Позиция(маркер2, назн2) + длина(маркер2),ДлинаКлассификатора));
                        если не проверитьсимвол(подстрока(знач,1,1)) тогда
                        начало
                                 Протокол("Ошибка выделенного значения маркера " + маркер2 + ":" + знач, Лог, Подробно);
                                 результат := 0;
                        конец
                        иначе
                        начало
                                Протокол("Нашли классификатор " + маркер2 + " : " + знач, Лог, Подробно);
                                от индекс2:= 1 до длина(знач) делать
                                        если Подстрока(знач,индекс2,1) = " " или Подстрока(знач,индекс2,1) = ")" тогда знач := подстрока(знач,1,индекс2-1);
                                Протокол("Убрали лишние пробелы из классификатора " + маркер2 + " : " + знач, Лог, Подробно);                 
                                если тип = "строка" тогда  Данные.ПолеПоИмени(поле).КакСтрока:=знач  иначе Данные.ПолеПоИмени(поле).КакЦелое:=знач;
                                если Подстрока(Назначение_поле.КакСтрока,Позиция(маркер2 + знач,назн2) + длина(маркер2 + знач),1) = " " тогда флаг_после :=1 иначе флаг_после :=0;
                                Протокол("Убираем классификатор " + маркер2 + ":" + знач + " из назначения : 1 часть=" + Подстрока(Назначение_поле.КакСтрока,1,Позиция(маркер2 + знач,назн2)-1) + " 2 часть=" + Подстрока(Назначение_поле.КакСтрока,Позиция(маркер2 + знач,назн2) + длина(маркер2 + знач)+флаг_после), Лог, Подробно);
                                Назначение_поле.КакСтрока := Подстрока(Назначение_поле.КакСтрока,1,Позиция(маркер2 + знач,назн2)-1) + Подстрока(Назначение_поле.КакСтрока,Позиция(маркер2 + знач,назн2) + длина(маркер2 + знач)+флаг_после);
                                //сообщение(Назначение_поле.КакСтрока);
                                результат := 1;
                        конец;
                конец;
        конец
        иначе результат := Контроль  + 1;       
конец;

//-----------------------------------------------------------------------------------------------------     
функция УникальнаяПроверкаДетали(Заголовок, Деталь, Плательщик, Получатель : СтатическиеДанные;Лог : Текст; Подробно : целое);
начало
  Протокол("Уникальная проверка детализации ", Лог, Подробно);
  Деталь.Редактировать;
  //........................................................................................
  //операция в детализации пп
  Деталь.ПолеПоИмени("BuhOperationCls").КакЦелое := 1601;
  Протокол("Проставили операцию 016.01", Лог, Подробно);
  //тип средств
//  Деталь.ПолеПоИмени("SourceMeansType").КакЦелое := 10100;
//........................................................................................
  //тип финансирования
  Деталь.ПолеПоИмени("SourceFinType").КакЦелое := 100;
  Протокол("Проставили тип финансирования 100", Лог, Подробно);
  Деталь.Сохранить;
  Протокол("Уникальная проверка детализации успешно завершена", Лог, Подробно);
конец;
//-----------------------------------------------------------------------------------------------------
// Комментарий
функция получитьНДС(Маркер : строка; данные : статическиеданные; поле,полеНДС : строка; Контроль : целое) : Целое;
переменные
        знач : целое;
начало
        если  Контроль = 0 тогда
        начало
                знач := Позиция(строчные(Маркер), строчные(Данные.ПолеПоИмени(поле).КакСтрока));
                если знач <> 0 тогда
                начало
                        Протокол("Выделили НДС : " + УбратьПробелы(Подстрока(Данные.ПолеПоИмени(поле).КакСтрока, знач + 0,Длина(данные.ПолеПоИмени(поле).КакСтрока) - знач + 1)), Лог, Подробно);
                        Данные.ПолеПоИмени(полеНДС).КакСтрока := УбратьПробелы(Подстрока(Данные.ПолеПоИмени(поле).КакСтрока, знач + 0,
                                                                  Длина(данные.ПолеПоИмени(поле).КакСтрока) - знач + 1));
                        Протокол("Убрали НДС из назначения : " + УбратьПробелы(Подстрока(данные.ПолеПоИмени(поле).КакСтрока, 1, знач - 1)), Лог, Подробно);                                         
                        данные.ПолеПоИмени(поле).КакСтрока := УбратьПробелы(Подстрока(данные.ПолеПоИмени(поле).КакСтрока, 1, знач - 1));
                        результат := 1;                                                                                         
                конец;
        конец
        иначе
        результат := Контроль + 1;       
конец;
// Комментарий
функция ПолучитьКлючКд(КД : строка) : целое;
переменные
        сс_Уведомления1 : статическиеданные;
начало
        сс_Уведомления1 := СоздатьСтатическиеДанные;
        сс_Уведомления1.СоединитьБД;
        сс_Уведомления1.Запрос := "[PumpData] {select id from kd where kdvalue='" + КД + "'}";
        сс_Уведомления1.Открыть;
        если сс_Уведомления1.ЧислоЗаписей > 1 тогда результат := 0 иначе результат := сс_Уведомления1.ПолеПоИмени("id").КакЦелое;
конец;

//-----------------------------------------------------------------------------------------------------
функция УникальнаяПроверкаЗаголовка(Заголовок, Деталь, Плательщик, Получатель : СтатическиеДанные;Лог : Текст; Подробно : целое);
начало
  Протокол("Уникальная проверка заголовка ", Лог, Подробно);
  Заголовок.Редактировать;  //.......................................................................................
               
   КонтрольНДС :=0;
   //выделим из назначения платежа поле НДС (все что после // снесем в поле НДС)
   КонтрольНДС := получитьНДС("//",Заголовок,"Note","NDS",КонтрольНДС);
   КонтрольНДС := получитьНДС("без налога (НДС)",Заголовок,"Note","NDS",КонтрольНДС);
   КонтрольНДС := получитьНДС("в т.ч. НДС",Заголовок,"Note","NDS",КонтрольНДС);
   КонтрольНДС := получитьНДС("в т.ч.НДС",Заголовок,"Note","NDS",КонтрольНДС);
   КонтрольНДС := получитьНДС("НДС",Заголовок,"Note","NDS",КонтрольНДС);
   КонтрольНДС := получитьНДС("вт.ч.НДС",Заголовок,"Note","NDS",КонтрольНДС);
//........................................................................................ 
//обработка мероприятия
  Деталь.ПолеПоИмени("SourceFact").КакЦелое:=0;
  КонтрольМероприятие:=0;
  КонтрольМероприятие:=получитьКлассификатор("ме=",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceFact","целое",КонтрольМероприятие);
  КонтрольМероприятие:=получитьКлассификатор("ме",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceFact","целое",КонтрольМероприятие);
  КонтрольМероприятие:=получитьКлассификатор("м\е",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceFact","целое",КонтрольМероприятие);
  КонтрольМероприятие:=получитьКлассификатор("м/е",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceFact","целое",КонтрольМероприятие);
  КонтрольМероприятие:=получитьКлассификатор("м-е",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceFact","целое",КонтрольМероприятие);
  КонтрольМероприятие:=получитьКлассификатор("мероприятие",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceFact","целое",КонтрольМероприятие);
  //Сообщение(Деталь.ПолеПоИмени("SourceFact").Какстрока);
  //выделим из назначения платежа поле м.е.(8 символов снесем в поле мероприятие)
//........................................................................................   
  Деталь.ПолеПоИмени("SourceKD").КакЦелое:=0;
  Деталь.ПолеПоИмени("SourceKD_str").Какстрока:="";
  КонтрольКД:=0;
  //сообщение(ВыбратьКлассификаторИзСправочника(тк_КД));
  КонтрольКД:=получитьКлассификатор("КД",Заголовок.ПолеПоИмени("Note"),21,Деталь,"SourceKD_Str","строка",КонтрольКД);
  если КонтрольКД тогда  // нашли КД
  начало
        Протокол("Пробуем получить ключ найденного КД : " + разыменовать("КД.Ключ",Деталь.ПолеПоИмени("SourceKD_str").Какстрока), Лог, Подробно);
        Деталь.ПолеПоИмени("SourceKD").КакЦелое := разыменовать("КД.Ключ",Деталь.ПолеПоИмени("SourceKD_str").Какстрока); // пробуем разыменовать
        если Деталь.ПолеПоИмени("SourceKD_str").Какстрока <> Разыменовать("КДКлюч.Код",Деталь.ПолеПоИмени("SourceKD").КакЦелое) или   // если не разыменовалось
             (Деталь.ПолеПоИмени("SourceKD").КакЦелое = 0 и Деталь.ПолеПоИмени("SourceKD_str").Какстрока <> "") тогда               // или еще хуже
        начало
                Протокол("Не разыменовалось. Покажем выбор КД", Лог, Подробно);
                кд := ВыбратьКлассификаторИзСправочника2(тк_КД);         //покажем выбор из справочника
                если кд="" или (разыменовать("КД.Ключ",кд) = кд) тогда 
                начало                                                  //если опять не рыменовался
                         Протокол("Пользователь не выбрал КД", Лог, Подробно);
                         Деталь.ПолеПоИмени("SourceKD").КакЦелое:=0;
                         Деталь.ПолеПоИмени("SourceKD_str").Какстрока:="";
                         Сообщение("Ошибка выбора КД, импорт будет продолжен");   
                конец
                иначе
                начало                                                      // разыменовался
                         Протокол("Пользователь выбрал КД : " + разыменовать("КД.Ключ",кд) + " : " + кд, Лог, Подробно);
                         Деталь.ПолеПоИмени("SourceKD").КакЦелое:=разыменовать("КД.Ключ",кд);
                         Деталь.ПолеПоИмени("SourceKD_str").Какстрока:=кд;
                         Протокол("Тип классификации поставим доходную (2)", Лог, Подробно);
                         Деталь.ПолеПоИмени("ClsType").КакЦелое:=2;                       
                конец;         
        конец
        иначе Деталь.ПолеПоИмени("ClsType").КакЦелое:=2;
  конец;   
  //Деталь.ПолеПоИмени("SourceKD").КакЦелое := ПолучитьКлючКД(Деталь.ПолеПоИмени("SourceKD_str").Какстрока);
  //показатьданные(деталь);
//........................................................................................
//обработка типа средств
  Деталь.ПолеПоИмени("SourceMeansType").КакЦелое := 10100;
  Протокол("Тип средств по умолчанию = 10100", Лог, Подробно);
  КонтрольТипСредств:=0;
  КонтрольТипСредств:=получитьКлассификатор("тс=",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceMeansType","целое",КонтрольТипСредств);
  КонтрольТипСредств:=получитьКлассификатор("т.с.",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceMeansType","целое",КонтрольТипСредств);
  КонтрольТипСредств:=получитьКлассификатор("тс",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceMeansType","целое",КонтрольТипСредств);
  КонтрольТипСредств:=получитьКлассификатор("т.с",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceMeansType","целое",КонтрольТипСредств);
  КонтрольТипСредств:=получитьКлассификатор("т.с",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceMeansType","целое",КонтрольТипСредств);
  КонтрольТипСредств:=получитьКлассификатор("тип средств",Заголовок.ПолеПоИмени("Note"),9,Деталь,"SourceMeansType","целое",КонтрольТипСредств);
  //если КонтрольТипСредств = 0 тогда
  //начало
  //      Диалог.Очистить;
  //      Диалог.Заголовок := "Выберите тип средств";
  //      Диалог.ДобавитьКлассификатор("Тип средств", тк_СредстваБюджета, 0);
        //Диалог.Требовать(тк_СредстваБюджета) := Да;
  //      если Диалог.Выполнить тогда Деталь.ПолеПоИмени("SourceMeansType").КакЦелое := СтрокаВЦелое(Диалог.Значение(тк_СредстваБюджета));  //ВызватьОшибку("Операция прервана пользователем");
  //конец;
 
  //Сообщение(Деталь.ПолеПоИмени("SourceMeansType").Какстрока);
//........................................................................................ 
 
 
  //сообщение(Заголовок.ПолеПоИмени("Note").КакСтрока);
    //из назначения платежа уберем скобки, в которых начало указано 02, т.е. ЕСБ
 если Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока) <> 0 тогда
  начало
    //Заголовок.ПолеПоИмени("Note").КакСтрока := Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока) + 3,
    //                                                     Длина(Заголовок.ПолеПоИмени("Note").КакСтрока) - Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока) - 2);
   
    //Заголовок.ПолеПоИмени("Note").КакСтрока := УбратьПробелы(Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция(")", Заголовок.ПолеПоИмени("Note").КакСтрока) + 1,
    //                                                         Длина(Заголовок.ПолеПоИмени("Note").КакСтрока) - Позиция(")", Заголовок.ПолеПоИмени("Note").КакСтрока)));
 
    Протокол("нашли (02......) и попробуем убрать", Лог, Подробно);
    Протокол("часть 1=" + Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, 1, Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока)-1), Лог, Подробно);
    Протокол("часть 2=" + Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция(")",Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока)))+Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока)), Лог, Подробно);
                                                           
    Заголовок.ПолеПоИмени("Note").КакСтрока := Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, 1, Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока)-1) +
                                               Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция(")",Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока)))+Позиция("(02", Заголовок.ПолеПоИмени("Note").КакСтрока));
                                                                                                           
                                                                                                                         
  конец;
  //из назначения платежа уберем скобку с классификаторами если первая
  Протокол("пробуем убрать классификацию в скобках если она в первой позиции", Лог, Подробно);
  Протокол("после убирания " + Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция(")", Заголовок.ПолеПоИмени("Note").КакСтрока) + 1), Лог, Подробно);
  если Позиция("(", Заголовок.ПолеПоИмени("Note").КакСтрока) = 1 и Позиция(")", Заголовок.ПолеПоИмени("Note").КакСтрока)<>0 тогда
    Заголовок.ПолеПоИмени("Note").КакСтрока := Подстрока(Заголовок.ПолеПоИмени("Note").КакСтрока, Позиция(")", Заголовок.ПолеПоИмени("Note").КакСтрока) + 1);

  Протокол("ставим бухоперацию по умолчанию = 3", Лог, Подробно);
  Заголовок.ПолеПоИмени("BuhPaymentCls").КакЦелое := 3;
 
  //вид платежа в заголовке документа
  Протокол("ставим вид платежа = 3", Лог, Подробно);
  Заголовок.ПолеПоИмени("PayTypeCLS").КакЦелое := 3;                                     
  //........................................................................................
  //бух. операция в заголовке документа от ТС попробуем ее поменять.
  Протокол("анализируем тип средств вторую цифру для простановки бухоперации : " + целоевстроку(Округлить(СтрокаВЦелое(Деталь.ПолеПоИмени("SourceMeansType").КакСтрока) / 10000)) , Лог, Подробно);
  если Округлить(СтрокаВЦелое(Деталь.ПолеПоИмени("SourceMeansType").КакСтрока) / 10000) = 1 тогда Заголовок.ПолеПоИмени("BuhPaymentCls").КакЦелое := 3;
  если Округлить(СтрокаВЦелое(Деталь.ПолеПоИмени("SourceMeansType").КакСтрока) / 10000) = 2 тогда Заголовок.ПолеПоИмени("BuhPaymentCls").КакЦелое := 501;
  если Округлить(СтрокаВЦелое(Деталь.ПолеПоИмени("SourceMeansType").КакСтрока) / 10000) = 3 тогда Заголовок.ПолеПоИмени("BuhPaymentCls").КакЦелое := 501;
если Деталь.ПолеПоИмени("SourceKD").КакЦелое<>0 тогда Заголовок.ПолеПоИмени("BuhPaymentCls").КакЦелое := 511;
  // соответствие лс и РС (0=10 1=91 2=17)
  Протокол("анализируем 4ую цифру лс и сравниваем с последними цифрами казн.счета : " + Подстрока(Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока,4,1) + " : " + Подстрока(Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока,19,2), Лог, Подробно); 
  если Подстрока(Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока,4,1)=0 и Подстрока(Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока,19,2)<>10 тогда Сообщение("Ошибка соответстия ЛС("+ Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока  +") и РС("+ Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока +")");
  если Подстрока(Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока,4,1)=1 и Подстрока(Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока,19,2)<>91 тогда Сообщение("Ошибка соответстия ЛС("+ Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока  +") и РС("+ Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока +")");
  если Подстрока(Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока,4,1)=2 и Подстрока(Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока,19,2)<>17 тогда Сообщение("Ошибка соответстия ЛС("+ Плательщик.ПолеПоИмени("SOURCEFACIALACC_CLS").КакСтрока  +") и РС("+ Плательщик.ПолеПоИмени("SOURCEACCOUNTNAME").КакСтрока +")");
 
  Заголовок.Сохранить;
  Протокол("Уникальная проверка заголовка успешно завершена", Лог, Подробно);
 
  //........................................................................................
конец;

// Комментарий

//-----------------------------------------------------------------------------------------------------

начало
  Заголовок  := Коллекция.Значение("Заголовок");   
  Деталь     := Коллекция.Значение("Деталь");
  Плательщик := Коллекция.Значение("Плательщик");
  //показатьданные(деталь);
  Получатель := Коллекция.Значение("Получатель");
  //Лог        := Текст(Коллекция.Значение("Лог"));
  Лог := Объект(Коллекция.Значение("Лог"));
  Подробно   := Коллекция.Значение("Подробно");
 


 
 
  УникальнаяПроверкаЗаголовка(Заголовок, Деталь, Плательщик, Получатель, Лог, Подробно);
  СчД := 1;
  Деталь.ВНачало;
  пока не Деталь.ВКонце делать 
  начало
    Протокол(#13#10 + "Уникальная проверка " + ЦелоеВСтроку(СчД) + "-й записи детализации", Лог, Подробно);
    УникальнаяПроверкаДетали(Заголовок, Деталь, Плательщик, Получатель, Лог, Подробно);
    Деталь.Следующая;
    СчД := СчД + 1;
  конец;
конец;

Аватара пользователя
Val
зам. председателя совета директоров
зам. председателя совета директоров
Сообщения: 2029
Зарегистрирован: 09.06.2004 08:52
Откуда: Ейск
Контактная информация:

Re: УРМ и УСЗН

Сообщение Val » 13.04.2009 15:10

это код УРМ - Параметры - Импорт -УникальныйКонтрольДФКБКК.
еще в УРМ - Ресурсы - Макросы - Импорт - Настройка для нужного импорта надо прописать в поле "Макрос уникальных проверок" имя "УникальныйКонтрольДФКБКК".

Аватара пользователя
AL_NIK
кадидат 2го уровня
кадидат 2го уровня
Сообщения: 10
Зарегистрирован: 20.12.2005 01:00

Re: УРМ и УСЗН

Сообщение AL_NIK » 04.05.2009 16:24

Добрый день! Кто-нибудь пробовал ставить краевой УРМ клиентам и сначала заставлять встраивать платежки в него, а затем выгружать нам.
Единственная проблема, это оставить данные только по их лицевому счёту, плюс изменить код пользователя и обнулить криптопрофиль. С кодом и криптопрофилем просто, а вот с лицевым пока не получается.
Конечно это проблемно сопровождать. Но хочу попробовать как будет работать.


Вернуться в «УРМ»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя

cron