Че Алексей

42
Рейтинг

dklp
Алексей Че



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

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

Друзья
  • Вакуленко Дмитрий
Подписчики 8

Рейтинг 42

Ведомости выдачи расчетных листков для программы "Бухгалтерия предприятия 3.0"

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

Простые внешние печатные формы реестров выдачи расчетных листков к документам "Ведомость в кассу" и "Ведомость в банк" раздела "Зарплата и кадры" программы "Бухгалтерия предприятия, редакция 3.0".

1 стартмани

26.03.2018    10341    29    dklp    0       

4

Комментарии

DevКак отправить из 1С POST-запрос с телом запроса в JSON#9 24.11.22 13:32
(7) Да, пробовал. Не помогает. Похоже, дело всё-таки не в теле запроса, а в защищенном соединении (1С, видимо, не может пробиться к API-серверу).
DevКак отправить из 1С POST-запрос с телом запроса в JSON#8 24.11.22 13:13
(7) Да, примерно так. Сервер 1С находится в сети провайдера, а запрос тестирую через web-форму на https://reqbin.com. Просто сейчас не могу выгрузить базу из облака к себе для тестирования, поскольку моя локальная платформа слетела после 15.11.2022 ("Вы стали жертвой подделки ПО").
DevКак отправить из 1С POST-запрос с телом запроса в JSON#5 24.11.22 13:00
(4) Вообще, без "Access-Control-Request-Headers: *" в curl запрос отрабатывает нормально. Просто этот заголовок был предусмотрен регламентом API. Версия платформы 1С:Предприятие 8.3 (8.3.20.2180), конфигурация Управление торговлей, редакция 11 (11.4.14.181). По поводу прокси и файрвола не могу сказать точно (поскольку подключаюсь к облачной базе провайдера по rdp), но, по крайней мере, обмен из 1С с другими внешними сервисами (ЭДО, EDI, AkiTorg) работает.
DevКак отправить из 1С POST-запрос с телом запроса в JSON#3 24.11.22 11:44
(2) Изначально так и было. Но выдавало: "Ошибка работы с Интернет: Failure when receiving data from the peer"
DevКак отправить из 1С POST-запрос с телом запроса в JSON#1 24.11.22 11:09
Есть POST-запрос на Curl:

Код
curl --request POST 'https://data.mongodb-api.com/app/endpoint/data/v1/action/findOne' \
--header 'Content-Type: application/json' \
--header 'Access-Control-Request-Headers: *' \
--header 'api-key: MY_UNIQUE_API_KEY' \
--data-raw '{ "collection":"myCollection", "database":"1c", "dataSource":"Cluster7" }'

Пробую отправить его стандартными средствами 1С, но получаю ошибку:

Код
{МодульУправляемогоПриложения(90)}:   Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);
по причине: Ошибка работы с Интернет:  Server returned nothing (no headers, no data)

Что здесь не так? Может быть, неправильно прикручено тело запроса?
Код
SSL = Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Новый СертификатыУдостоверяющихЦентровОС());  
Соединение = Новый HTTPСоединение("data.mongodb-api.com", 443,,,,, SSL);

Заголовки = Новый Соответствие;    
Заголовки.Вставить("Content-Type", "application/json"); 
Заголовки.Вставить("Access-Control-Request-Headers", "*");
Заголовки.Вставить("api-key", "MY_UNIQUE_API_KEY");

Данные = Новый Структура();
Данные.Вставить("collection", "myCollection");
Данные.Вставить("database", "1c"); 
Данные.Вставить("dataSource", "Cluster7"); 

ЗаписьJSON = Новый ЗаписьJSON;         
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Данные);         
ТелоЗапроса = ЗаписьJSON.Закрыть(); 
   
Запрос = Новый HTTPЗапрос("/app/endpoint/data/v1/action/findOne", Заголовки);
Запрос.УстановитьТелоИзСтроки(ТелоЗапроса);

Ответ = Соединение.ВызватьHTTPМетод("POST", Запрос);

Сообщить(Ответ.ПолучитьТелоКакСтроку());
ТорговляКак отправлять документы в 1С-ЭДО грузополучателям, которые являются обособленными подразделениями головного контрагента?#1 13.10.22 10:33
Добрый день.

Для начала, весь торговый и складской учет ведется в УТ 11, в конце месяца данные синхронизируются в БП 3.0. Настройку ЭДО и обмен документами необходимо осуществлять в УТ 11.

Задача:

Предположим, имеется головной контрагент (рабочее наименование - Торговая сеть "Ромашка") с видом контрагента "Юридическое лицо". К нему подвязано множество контрагентов (рабочие наименования - Магазин "Ромашка 1", Магазин "Ромашка 2" и т.д.) с видом контрагента "Обособленное подразделение юр. лица" (то есть в поле "Головной контрагент" у всех обособок указана ссылка на контрагента Торговая сеть "Ромашка"). У всех "ромашек" одинаковое юридическое наименование (ООО "Ромашка") и общий ИНН, отличаются только рабочие наименования в информационной базе, а также КПП и адреса.

Договор у нас заключен с головным контрагентом, расчеты за поставленные в торговую сеть товары также осуществляются с головным контрагентом. Обособки выступают только в роли грузополучателей. Поэтому сейчас оформление документов реализации в информационной базе происходит следующим образом: в поле "Контрагент" указываем ссылку на Головного контрагента (Торговая сеть "Ромашка"), а в реквизитах печати в поле "Грузополучатель" - ссылку на обособку (Магазин "Ромашка N"). Тогда при выводе на печать УПД все поля, включая поле ИНН/КПП покупателя (6б), заполняется корректно.

Однако при переходе на обмен документами через ЭДО столкнулись со следующей неразрешимой проблемой. У торговой сети на юр. лицо и на каждую обособку заведены отдельные учетные записи в системе ЭДО (то есть у каждой обособки свой идентификатор, и еще один идентификатор для юр. лица). По условиям обмена документами с торговой сетью электронные УПД нужно отправлять для подписания напрямую на идентификаторы обособок, а акты сверок - на юр. лицо. Если оформлять документы как раньше (где в поле "Контрагент" указывать ссылку на Головного контрагента), тогда и электронный документ будет подтягиваться к идентификатору юр. лица, а не к идентификатору грузополучателя-обосоки.

В службе поддержки 1С-ЭДО предлагают создать у головного контрагента под каждую обособку свой отдельный договор и затем выполнять настройки отправки электронных УПД с привязкой к идентификаторам обособок в разрезе этих договоров. Но это неправильно, потому что договор с торговой сетью у нас один, и все взаиморасчеты ведутся по субконто этого договора. Если делать как они предлагают, тогда ломается весь учет. Как потом производить зачет авансов и раскидывать платежи? У торговой сети, с которой мы сейчас работаем, порядка 250 магазинов. А если их будет 500. Под каждый магазин создавать отдельный виртуальный договор?

Прошу поделиться опытом, кто как выходил из такой ситуации.
DevКак поместить таблицу значений в реквизит объекта очета из модуля формы?#8 03.09.22 11:57
(6) Как пример, Запрос в наборе данных Схемы компоновки данных отчета может быть таким:
Код
ВЫБРАТЬ
   РеализацияТоваровУслугТовары.Ссылка КАК ДокументПродажи,
   РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
   ВнешняяВТ.Изготовитель КАК Изготовитель 
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
      ЛЕВОЕ СОЕДИНЕНИЕ ВнешняяВТ КАК ВнешняяВТ
      ПО РеализацияТоваровУслугТовары.Номенклатура.Наименование = ВнешняяВТ.Номенклатура
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

Это простой запрос, который позволяет затем группировать в настройках отчета продажи по Номенклатуре, Документам и Изготовителям. Недостающие данные об Изготовителях мы берем из внешней таблицы, загружаемой пользователем на форме отчета в интерактивном режиме в виде Excel-файла. Данные из Excel-файла в модуле формы отчета считываем в Табличный документ, а уже в модуле объекта отчета из Табличного документа грузим в Таблицу значений. Далее Таблицу значений запросом помещаем во Временную таблицу, которую тем же запросом прикручиваем к Менеджеру временных таблиц. Наконец, Менеджер временных таблиц передаем в ПроцессорКомпоновкиДанных. Таким образом внешняя таблица становится доступной для построения Запроса в наборе данных Схемы компоновки данных, как если бы мы использовали обычную (внутреннюю) таблицу из нашей информационной базы.

P.S. прикрепил файл своего внешнего отчета для полноты картины

Прикрепленные файлы:

РеализацияТоваровПоСтавке10ПлюсИзготовителиИзВнешнегоExcelФайла.erf
DevКак поместить таблицу значений в реквизит объекта очета из модуля формы?#5 03.09.22 10:45
(4) Мой внешний отчет организован по такому принципу.

1. В Запросе набора данных Схемы компоновки данных отчета используется соединение с ВнешняяВТ.

ВнешняяВТ - это таблица, в которую предварительно будут выгружены данные из Табличного документа ТабДок.
ТабДок - это реквизит формы отчета, куда до этого была загружена Excel-таблица с внешними данными.

2. Чтобы ВнешняяВТ была доступна в Запросе набора данных Схемы компоновки данных, подключаем МенеджерВТ, который затем передадим в ПроцессорКомпоновкиДанных. Это делается в модуле объекта отчета:

Код
// это вспомогательная функция для выгрузки табличного документа в таблицу значений   
// здесь ТабДок - реквизит объекта отчета, куда мы ранее прочитали содержимое файла

Функция ПолучитьТЗ()                                        

   ПЗ = Новый ПостроительЗапроса;
   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабДок.Область());
   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
   ПЗ.ЗаполнитьНастройки();
   ПЗ.Выполнить();
   
   ТЗ = ПЗ.Результат.Выгрузить();    
   Возврат ТЗ;

КонецФункции
                        
// это процедура, где мы переопределяем алгоритм компоновки результата отчета   
   
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

   СтандартнаяОбработка = Ложь;      
   
   // формируем запрос для загрузки таблицы значений во временную таблицу

   Запрос = Новый Запрос;
   Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
   Запрос.Текст = 
      "ВЫБРАТЬ
      |   ВЫРАЗИТЬ(ТЗ.Номенклатура КАК СТРОКА (200)) КАК Номенклатура,
      |   ВЫРАЗИТЬ(ТЗ.Изготовитель КАК СТРОКА (40)) КАК Изготовитель
      |ПОМЕСТИТЬ ВнешняяВТ
      |ИЗ
      |   &ТаблицаЗначений КАК ТЗ";
   Запрос.УстановитьПараметр("ТаблицаЗначений", ПолучитьТЗ());
   Запрос.Выполнить();

   // передаем менеджер временных таблиц процессору компоновки данных 
   // так наша временная таблица станет видна в основном запросе СКД
   
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанных"));
       
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровки, Истина,, МенеджерВТ);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
          
КонецПроцедуры
DevДоработка настроек отправки электронного документа в 1С-ЭДО для УТ 11#1 23.02.22 12:43
В настройках 1С-ЭДО типовой конфигурации УТ 11 при отправке электронного документа формата УПД (ММВ-7-15/155@) есть возможность задать опцию для выгрузки в поле "Код товара" только Артикул или Штрихкод. Но покупатель настаивает на том, чтобы в этом поле был указан код товара, принятый в учетной системе самого покупателя. Для этого у поставщика в карточку Номенклатуры был добавлен доп. реквизит "КодТовараДляСетиПокупателя". Вопрос, как теперь заставить выгружать этот доп. реквизит в электронный документ. Не подскажите, в каком модуле или документе конфигурации прописана логика заполнения этого поля. По идее, нужно всего лишь добавить пару строчек кода.

P.S.
Вариант с заполнением дополнительных полей (как это показано, например, здесь -> https://1c-edo.ru/handbook/22/4635/ ) не рассматривается. Он прекрасно отрабатывает, если в формулу для заполнения дополнительного поля прописать наименование доп. реквизита, но проблема в том, что в этом случае в УПД будет создаваться, как и предполагалось, дополнительное поле (отдельная колонка), а покупатель настаивает, чтобы его код товара попадал именно в существующее поле "Код товара".

Прикрепленные файлы:

Снимок1.JPG
Снимок2.jpg
DevОшибка "Каталог не обнаружен" после помещения файла во временное хранилище#4 10.02.22 13:54
Ничего пока лучше не придумал для переоткрытия файла отчета, кроме как через имитацию нажатия горячих клавиш:
Код
&НаКлиенте
Процедура ПереоткрытьОтчет(Команда)     

   // сначала копируем имя файла отчета в буфер обмена
   ОбъектHtml = Новый COMОбъект("htmlfile");
   ОбъектHtml.ParentWindow.ClipboardData.Setdata("Text", ИмяФайла());

    ЭтаФорма.Закрыть();  
   
   // имитируем нажатие горячих клавиш как при ручном открытии файла  
   ОбъектShell = Новый COMОбъект("WScript.Shell"); 
   ОбъектShell.SendKeys("^o");  
   ОбъектShell.SendKeys("^щ");
   ОбъектShell.SendKeys("^v");
   ОбъектShell.SendKeys("^м");
   ОбъектShell.SendKeys("{ENTER}");
   
КонецПроцедуры                                       

&НаСервере
Функция ИмяФайла()    
   
   ИмяФайла = РеквизитФормыВЗначение("Отчет").ИспользуемоеИмяФайла;
   Возврат ИмяФайла;
   
КонецФункции