Красиков Эдуард

72
Рейтинг

kras_71
Эдуард Красиков



  •   Регистрация: 12.05.2008 (15 лет назад)

  •   Был(а) на сайте: 21.03.2024

Друзья
  • Дмитрий Малышев
  • Евгений Комиссаров
  • Гордей Голиков
  • Сергей
  • Андрей Волин
  • Александр Кузиков
Подписчики 8

Группы

Профессиональный разработчик

Рейтинг 72

Групповая отправка актов сверки взаиморасчетов через ЭДО

Инструменты и обработки Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Абонемент ($m) Внешняя обработка (ert,epf) Взаиморасчеты ЭДО и ОФД Акт сверки

Заканчивается очередной квартал, полугодие, год! Возникает необходимость сделать сверку с контрагентами. Есть документ в конфигурации "Акт сверки взаиморасчетов". Представьте, сотни контрагентов и по каждому необходимо создать отдельный документ, задача та еще. А при этом еще сдача отчетности поджимает. Благо есть куча обработок здесь для группового формирования актов сверок. Это существенно сокращает время, но их ведь еще нужно и доставить контрагентам любым из доступных способов. Самый доступный - это отправка по ЭДО.

1 стартмани

26.12.2022    3632    21    kras_71    1       

4

Ввод организации с подсказкой и разбиением в структуру реквизитов (dadata.ru)

Инструменты и обработки Бухгалтер Руководитель проекта Бухгалтерский учет 7.7 Конфигурации 1cv7 Windows Абонемент ($m) Внешняя обработка (ert,epf) WEB-интеграция

Демонстрация использования подсказки при вводе организации с помощью сервиса dadata.ru и разбор результата по структуре реквизитов: название организации, адрес, ИНН, КПП, ОГРН и ФИО руководителя организации или индивидуального предпринимателя из ЕГРЮЛ / ЕГРИП и др.

1 стартмани

05.06.2016    17281    43    kras_71    3       

4

Печать в Word без COM объектов и внешних компонент

Инструменты и обработки Программист Windows Абонемент ($m) Приложение (exe) Инструментарий разработчика

Печать в Word без COM объектов и внешних компонент с использованием утилиты REPORTF.

1 стартмани

08.02.2015    11405    3    kras_71    5       

7

Проверка ИНН v.7.7

Статья Программист Платформа 1С v7.7 Конфигурации 1cv7 Россия Windows Бесплатно (free) Нет файла Универсальные функции

Проверка ИНН, есть наверняка куча аналогов, для v.8.x точно есть и не один.

08.03.2014    10266    kras_71    0       

3

Комментарии

DevПутевые листы (расширение + отчет) для БП 3.0#32 23.03.24 13:58
Процедура записи проводки

Код
Процедура ЗаписатьПроводку(Реквизиты,Движения,СчетЗатрат,СвойстваСчетЗатрат,НоменклатураОстаток,КоличествоОстаток)
   
   СчетТопливо         = ПланыСчетов.Хозрасчетный.ТопливоВБаке;
   СчетПодотчетныеЛица = ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами;
   СчетТопливнаяКарта  = ПланыСчетов.Хозрасчетный.ТопливныеКарты;
   
   ТипКассовыйЧек = Перечисления.ВидыДокументовПриобретенияГСМ.КассовыйЧек;
   
   ВидСубконтоНоменклатура = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура;
   ВидСубконтоТранспортныеСредства = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ТранспортныеСредства;
   ВидСубконтоРаботникиОрганизаций = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций;

   Проводка = Движения.Хозрасчетный.Добавить();
   Проводка.Период      = Реквизиты.Период;
   Проводка.Организация = Реквизиты.Организация;
   СодержаниеПроводки   = НСтр("ru='Расход топлива по %1'", ОбщегоНазначения.КодОсновногоЯзыка());
   Проводка.Содержание  = СтрШаблон(СодержаниеПроводки, Реквизиты.ТранспортноеСредство);
   
   // Дт
   Проводка.СчетДт = СчетЗатрат;
   Для НомерСубконто = 1 По 3 Цикл
      Субконто    = СтрШаблон("Субконто%1", НомерСубконто);
      ВидСубконто = СтрШаблон("ВидСубконто%1", НомерСубконто);
      Если СвойстваСчетЗатрат[ВидСубконто] <> Неопределено Тогда
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт,
         СвойстваСчетЗатрат[ВидСубконто], Реквизиты[Субконто]);
      КонецЕсли;
   КонецЦикла;
   
   // Кт
   Проводка.КоличествоКт = КоличествоОстаток;
   Проводка.СчетКт       = СчетТопливо;
      БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
      ВидСубконтоНоменклатура, НоменклатураОстаток);
   БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
      ВидСубконтоТранспортныеСредства, Реквизиты.ТранспортноеСредство);
      БухгалтерскийУчет.УстановитьПодразделенияПроводки(Проводка, Реквизиты.ПодразделениеЗатрат, Реквизиты.Подразделение);
    
КонецПроцедуры   
   

DevПутевые листы (расширение + отчет) для БП 3.0#31 23.03.24 13:40
Что бы учесть разные виды топлив в рамках одного путевого листа, я думаю правильнее будет так
Код
&Вместо("СформироватьДвиженияРасходыПоПутевомуЛисту")
Процедура Расш3_СформироватьДвиженияРасходыПоПутевомуЛисту(ПриобретениеТоплива, ТаблицаРеквизиты, Движения)
СтруктураТаблиц = ПодготовитьПараметрыПоступлениеКупленногоТоплива(ПриобретениеТоплива, ТаблицаРеквизиты);
   
   Реквизиты = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтруктураТаблиц.Реквизиты[0]);
   
   Движения.Хозрасчетный.Записывать = Истина;
   
   СчетТопливо         = ПланыСчетов.Хозрасчетный.ТопливоВБаке;
   СчетПодотчетныеЛица = ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами;
   СчетТопливнаяКарта  = ПланыСчетов.Хозрасчетный.ТопливныеКарты;
   
   ТипКассовыйЧек = Перечисления.ВидыДокументовПриобретенияГСМ.КассовыйЧек;
   
   ВидСубконтоНоменклатура = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура;
   ВидСубконтоТранспортныеСредства = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ТранспортныеСредства;
   ВидСубконтоРаботникиОрганизаций = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций;
   // Делаем проводки по купленному топливу
   Для Каждого ТекущаяСтрока Из СтруктураТаблиц.КупленноеТопливо Цикл
      
      Проводка = Движения.Хозрасчетный.Добавить();
      
      Проводка.Период      = Реквизиты.Период;
      Проводка.Организация = Реквизиты.Организация;
      Проводка.Сумма       = ТекущаяСтрока.Сумма;
      
      // Дт
      Проводка.СчетДт       = СчетТопливо;
      Проводка.КоличествоДт = ТекущаяСтрока.Количество;
      
      БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт, 
      // изменено, так как номенклатуру берем не из реквизитов, а из таблицы для каждой записи отдельно
      // ВидСубконтоНоменклатура, Реквизиты.Топливо);  
      // на
      ВидСубконтоНоменклатура, ТекущаяСтрока.ТопливодляЗаправки); 
      // конец изменений
      БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт,
      ВидСубконтоТранспортныеСредства, Реквизиты.ТранспортноеСредство);
      
      // Кт
      Если ТекущаяСтрока.ВидВходящегоДокумента = ТипКассовыйЧек Тогда
         
         Проводка.СчетКт = СчетПодотчетныеЛица;
         
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
            ВидСубконтоРаботникиОрганизаций, Реквизиты.ФизЛицо);
         
         СодержаниеПроводки = СодержаниеПроводкиПокупкаПоПутевомуЛисту(
            Реквизиты.ТранспортноеСредство,
            ТекущаяСтрока.ВидВходящегоДокумента,
            ТекущаяСтрока.НомерВходящегоДокумента,
            Формат(ТекущаяСтрока.ДатаВходящегоДокумента, "ДЛФ=D"));
         
      Иначе
         
         Проводка.СчетКт = СчетТопливнаяКарта;
         
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт, 
      // изменено, так как номенклатуру берем не из реквизитов, а из таблицы для каждой записи отдельно
      // ВидСубконтоНоменклатура, Реквизиты.Топливо);  
      // на
            ВидСубконтоНоменклатура, ТекущаяСтрока.ТопливодляЗаправки);
      // конец изменений      
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
            ВидСубконтоТранспортныеСредства, Реквизиты.ТранспортноеСредство);
         
         Проводка.КоличествоКт = ТекущаяСтрока.Количество;
         
         СодержаниеПроводки = СодержаниеПроводкиПокупкаПоПутевомуЛисту(
            Реквизиты.ТранспортноеСредство,
            ТекущаяСтрока.ВидВходящегоДокумента,
            ТекущаяСтрока.НомерВходящегоДокумента);
         
      КонецЕсли;
      
      БухгалтерскийУчет.УстановитьПодразделенияПроводки(Проводка, Реквизиты.Подразделение, Реквизиты.Подразделение);
      Проводка.Содержание = СодержаниеПроводки;
      
   КонецЦикла;  
   
    СчетЗатрат = Реквизиты.СчетЗатрат;
   СвойстваСчетЗатрат = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СчетЗатрат);
   НужноСписать=Реквизиты.КоличествоРасход;  // топливо, которое израсходовали, далее будем списывать его до нуля по разным номенклатурам топлива
   
     // Списание затрат  
   
   // Старый алгоритм полностью переписан, если кому интересно, можно его посмотреть в оригинальной версии процедуры
   // Здесь пишем свой алгоритм
   // Алгоритм примерно такой
   // Определяем что за топливо осталось в баке  
   
   Запрос = Новый Запрос;
   Запрос.Текст = 
   "ВЫБРАТЬ
   |ХозрасчетныйОстатки.КоличествоОстаток КАК ОстатокНаНачало,
    | ХозрасчетныйОстатки.Субконто2 как Номенклатура
    | ИЗ
   |   СПРАВОЧНИК.ТРАНСПОРТНЫЕсРЕДСТВА КАК ТРАНСПОРТНЫЕсРЕДСТВА
   |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(НАЧАЛОПЕРИОДА(&периодначало, ДЕНЬ), Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТопливоВБаке), &Видысубконто, ) КАК ХозрасчетныйОстатки
   |   ПО (ХозрасчетныйОстатки.Субконто1 = ТранспортныеСредства.ССЫЛКА)
    |   ГДЕ
         
   | ТранспортныеСредства.ССЫЛКА = &ТранспортныеСредства";
   
   Запрос.УстановитьПараметр("ТранспортныеСредства", Реквизиты.транспортноесредство);
    
   Запрос.УстановитьПараметр("периодначало", Реквизиты.период);   
      ВидыСубконто = Новый Массив;
    ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Транспортныесредства
    );
   ВидыСубконто.Добавить(
        ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура
    );
   Запрос.УстановитьПараметр("ВидыСубконто", ВидыСубконто);   
   ТопливыВбаке = Запрос.Выполнить().Выгрузить();
   
   // По чему именно выгрузить, а не цикл по выборке?
   // Изначально думал, что логически было бы списывать в обратном порядке топливо в баке,
   // но потом понял, что ошибаюсь, нужно писывать по принципу первый пришел, первый ушел. По фиг, что там все топливо в перемешку в баке.

Для Сч = 0 По ТопливыВбаке.Количество()-1 Цикл
   Строка = ТопливыВбаке.Получить(Сч);   
   КоличествоОстаток=Строка.ОстатокНаНачало;
   НоменклатураОстаток=Строка.Номенклатура;  
// нашли номенклатуру топлива в баке   
Если НужноСписать>=КоличествоОстаток Тогда
   ЗаписатьПроводку(Реквизиты,Движения,СчетЗатрат,СвойстваСчетЗатрат,НоменклатураОстаток,КоличествоОстаток);
   НужноСписать=НужноСписать-КоличествоОстаток;
Иначе
   Если НужноСписать>0 Тогда
   ЗаписатьПроводку(Реквизиты,Движения,СчетЗатрат,СвойстваСчетЗатрат,НоменклатураОстаток,НужноСписать); 
   НужноСписать=0;
   КонецЕсли;
КонецЕсли;
    КонецЦикла;     
   
   // Если не все списали и есть еще чего списать, списываем по заправкам в путевом  
   // Опять же списание идет по алгоритму, первый пришел, первый ушел 
   // Делаем цикл по таблице купленное топливо
   // Получаеме номенклатуру купленного и количество
   // и списываем остатки того израсходованного топлива, которое осталось не списанным
   
Для Каждого ТекущаяСтрока Из СтруктураТаблиц.КупленноеТопливо Цикл
   Номенклатура = ТекущаяСтрока.ТопливодляЗаправки;
   КупленоеКоличество = ТекущаяСтрока.Количество;  
Если НужноСписать>=КупленоеКоличество Тогда
   ЗаписатьПроводку(Реквизиты,Движения,СчетЗатрат,СвойстваСчетЗатрат,Номенклатура,КупленоеКоличество);   
   НужноСписать=НужноСписать-КупленоеКоличество;
Иначе 
   Если НужноСписать>0 Тогда
   ЗаписатьПроводку(Реквизиты,Движения,СчетЗатрат,СвойстваСчетЗатрат,Номенклатура,НужноСписать);
   НужноСписать=0;
    КонецЕсли;  
КонецЕсли;
КонецЦикла;   
    // Все на этом
КонецПроцедуры

DevПутевые листы (расширение + отчет) для БП 3.0#30 22.03.24 17:03
Представленное автором решение, вполне работоспособно при заправке любым способом, кроме топливных карт. В случае с топливной картой работает, но не вполне корректно!!! Там списание идет не много по другому. Путевой лист списывает количество, а суммы списываются приходным документом от поставщика. И от того как правильно путевой лист сделает списание по количеству и по топливно, зависят потом общие итоги!!!
DevПутевые листы (расширение + отчет) для БП 3.0#29 22.03.24 16:51
Правильнее было бы так:

Код
Процедура СформироватьДвиженияРасходыПоПутевомуЛисту(ПриобретениеТоплива, ТаблицаРеквизиты, Движения) Экспорт
   
   СтруктураТаблиц = ПодготовитьПараметрыПоступлениеКупленногоТоплива(ПриобретениеТоплива, ТаблицаРеквизиты);
   
   Реквизиты = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтруктураТаблиц.Реквизиты[0]);
   
   Движения.Хозрасчетный.Записывать = Истина;
   
   СчетТопливо         = ПланыСчетов.Хозрасчетный.ТопливоВБаке;
   СчетПодотчетныеЛица = ПланыСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами;
   СчетТопливнаяКарта  = ПланыСчетов.Хозрасчетный.ТопливныеКарты;
   
   ТипКассовыйЧек = Перечисления.ВидыДокументовПриобретенияГСМ.КассовыйЧек;
   
   ВидСубконтоНоменклатура = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура;
   ВидСубконтоТранспортныеСредства = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ТранспортныеСредства;
   ВидСубконтоРаботникиОрганизаций = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций;
   
   Для Каждого ТекущаяСтрока Из СтруктураТаблиц.КупленноеТопливо Цикл
      
      Проводка = Движения.Хозрасчетный.Добавить();
      
      Проводка.Период      = Реквизиты.Период;
      Проводка.Организация = Реквизиты.Организация;
      Проводка.Сумма       = ТекущаяСтрока.Сумма;
      
      // Дт
      Проводка.СчетДт       = СчетТопливо;
      Проводка.КоличествоДт = ТекущаяСтрока.Количество;
      
      БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт,
         ВидСубконтоНоменклатура, ТекущаяСтрока.ТопливодляЗаправки);
      БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетДт, Проводка.СубконтоДт,
         ВидСубконтоТранспортныеСредства, Реквизиты.ТранспортноеСредство);
      
      // Кт
      Если ТекущаяСтрока.ВидВходящегоДокумента = ТипКассовыйЧек Тогда
         
         Проводка.СчетКт = СчетПодотчетныеЛица;
         
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
            ВидСубконтоРаботникиОрганизаций, Реквизиты.ФизЛицо);
         
         СодержаниеПроводки = СодержаниеПроводкиПокупкаПоПутевомуЛисту(
            Реквизиты.ТранспортноеСредство,
            ТекущаяСтрока.ВидВходящегоДокумента,
            ТекущаяСтрока.НомерВходящегоДокумента,
            Формат(ТекущаяСтрока.ДатаВходящегоДокумента, "ДЛФ=D"));
         
      Иначе
         
         Проводка.СчетКт = СчетТопливнаяКарта;
         
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
            ВидСубконтоНоменклатура, ТекущаяСтрока.ТопливодляЗаправки);
         БухгалтерскийУчет.УстановитьСубконто(Проводка.СчетКт, Проводка.СубконтоКт,
            ВидСубконтоТранспортныеСредства, Реквизиты.ТранспортноеСредство);
         
         Проводка.КоличествоКт = ТекущаяСтрока.Количество;
         
         СодержаниеПроводки = СодержаниеПроводкиПокупкаПоПутевомуЛисту(
            Реквизиты.ТранспортноеСредство,
            ТекущаяСтрока.ВидВходящегоДокумента,
            ТекущаяСтрока.НомерВходящегоДокумента);
         
      КонецЕсли;
      
      БухгалтерскийУчет.УстановитьПодразделенияПроводки(Проводка, Реквизиты.Подразделение, Реквизиты.Подразделение);
      Проводка.Содержание = СодержаниеПроводки;
      
   КонецЦикла;
   
   // Списание затрат
   
   И здесь уже описываем списание затрат! 
                 Сначала определяем что за номенклатура топлива оставшееся в баке на начало и списываем его, 
затем в порядке возрастания строк из таблицы "КупленноеТопливо" списываем все остальные номенклатуры.
Оставшееся топливо в баке, спишется потом.   
КонецПроцедуры

DevПутевые листы (расширение + отчет) для БП 3.0#28 22.03.24 16:22
Данное расширение решает проблему частично. Может потому, что не правильно было сформулировано техническое задание. И как итог, какое тех.задание, такой же и результат! Это видно по процедуре "СформироватьДвиженияРасходыПоПутевомуЛисту" в расширении. Там идет цикл по таблице "КупленноеТопливо", но при создание проводки используется номенклатура из реквизитов документа, а не из этой таблицы.

Код
Реквизиты = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтруктураТаблиц.Реквизиты[0]);
если реквизиты.топливодлязаправки <> реквизиты.номенклатура тогда
   реквизиты.номенклатура=реквизиты.топливодлязаправки;
конецесли;

Это о чем вообще? Получается, что изначально перед циклом подменяется значение реквизита
и все! Если в таблице "КупленноеТопливо" будет больше одной записи и все с разными видами топлива, то будет применено одно при проводках, ровно так же как и раньше. В оригинале номенклатура берется из справочника "Транспортные средства", А здесь видимо из таблицы "КупленноеТопливо", но одно!!!!! Т.е. нет разделения по маркам топлива в том случае, если было несколько заправок разным топливом в рамках одного путевого листа! И далее списание затрат, точно так же происходит!!! Взлетело и работает до сих пор у заказчика, видимо по тому, что их это устроило! А в случае описанном выше просто делают несколько путевых с разным видом топлива и все. Таким образом, можно было и без этого расширения обойтись. Просто меняя при составлении Путевого листа номенклатуру у траспорта. Хотя, этот реквизит вряд ли периодический и при перепроведении все слетит. Вообщем так то полезная доработка, но слегка не доработанная! Плюс ко всему ни каких комментов в коде, что, от куда, за чем и по чему? И куча за комментированного мусора!!! Есть же определенная этика, давайте ее будем соблюдать .....
БУПутевой лист с учетом изменений с сентября 2023 года#0 22.09.23 20:01
Форма путевого листа для легкового автомобиля с учетом всех изменений.
ПубликацииГрупповая отправка актов сверки взаиморасчетов через ЭДО#0 23.12.22 22:46
Заканчивается очередной квартал, полугодие, год! Возникает необходимость сделать сверку с контрагентами. Есть документ в конфигурации "Акт сверки взаиморасчетов". Представьте, сотни контрагентов и по каждому необходимо создать отдельный документ, задача та еще. А при этом еще сдача отчетности поджимает. Благо есть куча обработок здесь для группового формирования актов сверок. Это существенно сокращает время, но их ведь еще нужно и доставить контрагентам любым из доступных способов. Самый доступный - это отправка по ЭДО.
БУСоздание произвольных документов для 1С:ЭДО на основе печатных форм документов#9 20.04.21 18:14
Еще есть один интересный метод, при чем в той же конфигурации, которую описываю:
Код
ОбменСКонтрагентамиСлужебныйКлиент.СоздатьПроизвольныйДокументИзТабличного(Документ.Ссылка,ПечатнаяФорма);

При вызове этого метода, будет открыт новый произвольный ЭД, с вложенным файлом уже печатной формы Вашего документа.
А дальше опять же, что хотим, то и делаем с ним что хотите!
Под ПечатнойФормой понимается Объект типа табличный документ, грубо говоря уже сформированная печатная форма.
БУСоздание произвольных документов для 1С:ЭДО на основе печатных форм документов#8 20.04.21 18:06
(6) В этом случае, будет создать и записан произвольный документ в системе с Вашими параметрами. Далее в Текущих делах ЭДО его останется пописать и отправить, собственно так же как и в этом дополнении.
БУСоздание произвольных документов для 1С:ЭДО на основе печатных форм документов#7 20.04.21 18:00
(6) При чем все заполниться корректно как разработчики и задумывали, за чем городить было такой огород в этой конкретной обработке, ни как не могу понять!