Сертаков Виталий

30
Рейтинг

Виталий Сертаков
sertak



  •   Регистрация: 20.01.2013 (4 года назад)

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

Рейтинг 30

Документ Пересортица товаров (Бухгалтерия 3.0, Бухгалтерия для Беларуси 2.1) 1

v8::БУ 1cv8.cf БП3.0 Беларусь Россия БУ Учет ТМЦ Абонемент ($m)

Документ предназначен для устранения пересорта между товарами, как между разными, так и между одинаковыми, т.е. между партиями. Разница списывается/приходуется на указанные счета.

1 стартмани

28.06.2017    2247    3    0    

Консоль запросов 1С 8 / SQL 12

v8::УФ v8::Запросы 1cv8.cf Беларусь Абонемент ($m)

Обработка Консоль запросов 1С 8 / SQL предназначена для создания и выполнения запросов в режиме управляемого приложения к информационной базе 1С 8 и базам данных SQL.

1 стартмани

27.02.2017    4612    22    8    

Игры в 1С (управляемые формы): Сапер 2

v8::УФ 1cv8.cf Беларусь Абонемент ($m)

Обработка Игры в 1С предназначена для приятного времяпрепровождения в свободное от работы время.

1 стартмани

26.02.2017    3771    1    8    

Сравнение данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS, табличный документ) 15

v8 1cv8.cf Беларусь Абонемент ($m)

Обработка Консоль сравнения данных из разных источников предназначена для сравнения данных, выбранных из разных источников данных (информационных баз 1С 8, баз данных SQL, CSV/TXT/DBF/XLS, вручную заполненного табличного документа).

1 стартмани

13.02.2017    5379    26    13    

Комментарии

Dev1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут#28 23.11.17 11:58
(27) П.С. Насчет оптимальности кода и прочее - это не та ветка ).
Dev1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут#27 23.11.17 11:50
Добавлю свои 5 копеек что ли.
В октябре 2017 сменил не удовлетворявший требованиям чат *** на бесплатную версию MyChat (от скайпа ранее решили уйти по причине его врожденной ущербности зависимости от сети интернет и периодической глючности разной степени серьезности), благо число сотрудников компании пока меньше 20 и в бесплатную версию вписываемся. Меня как 1Сника естественно интересовала интеграция чата с ней любимой. Оказалось все довольно просто: закинуть 2 библиотеки в каталог 1С.
Ниже пример процедуры, рассылающей информацию о днях рождения сотрудников из конфигурации Бухгалтерия для Беларуси 2.1 за 3 дня и в день рождения всем, кроме именинников. Конфигурация доработана следующим образом:
В справочник Сотрудники добавлены реквизиты ТА_UIN (UIN пользователя чата), ТА_ПолучатьУведомления (необходимость отправки данному сотруднику сообщений) и ТА_РассылатьУведомленияОДР (необходимость оповещения коллег о ДР данного сотрудника). При приеме я вношу в сотрудника UID, при проведении увольнения флаги сбрасываются автоматом (код из увольнения не привожу, он примитивен). Требования к моему примитивному механизму: у каждого сотрудника должна быть учетка в MyChat, тогда каждый актуальный сотрудник будет гарантированно уведомлен о ДР других сотрудников, кроме собственного.
На данный момент есть нюанс: при отправке из 64-битной версии 1С компонента не загружается из-за ошибки, поэтому я через планировщик задач windows открываю внешнюю обработку в пустой базе 32-битной версии 1С, при этом к бухгалтерии подключаюсь удаленно через COM для получения списка сотрудников, но разработчики пообещали исправить ошибку, так что это неудобство временное. Приведенный код предназначен для 32-битной 1С. Если хотите сделать через планировщик, то в коде добавьте выполнение запроса через COM, в остальном все то же.
Код
Функция УстановитьСоединениеСMyChat(ТекстОшибки)
   Результат = ПодключитьВнешнююКомпоненту("mychatvk.dll","MyChat", ТипВнешнейКомпоненты.Native);
   Если Результат Тогда
      Возврат Новый ("AddIn.MyChat.MyChatClass");
   Иначе 
      ТекстОшибки = "Ошибка подключения к mychatvk.dll на сервере";
      Возврат Неопределено;
   КонецЕсли;
КонецФункции

Код
Функция ОтправитьСообщениеОдномуПользователю(Подключение, UINПользователя, ТекстСообщения)
   // адрес сервера, номер порта, ключ Integration API, отправитель, получатель, текст сообщения
   КлючIntegrationAPI = "***";
     Подключение.SendPrivateMessage("192.168.0.123", 2004, КлючIntegrationAPI, "0", Строка(UINПользователя), ТекстСообщения);
КонецФункции

Код
Процедура НапомнитьОДняхРожденияСотрудников() Экспорт
   
   ТекстОшибки = "";
   ПодключениеКMyChat = УстановитьСоединениеСMyChat(ТекстОшибки);
   Если ПодключениеКMyChat = Неопределено Тогда
      Сообщить(ТекстОшибки);
      Возврат;
   КонецЕсли;
   
   //Список получателей
   Запрос = Новый Запрос;
   Запрос.Текст = 
      "ВЫБРАТЬ РАЗЛИЧНЫЕ
      |   Сотрудники.ТА_UIN КАК UIN
      |ИЗ
      |   Справочник.Сотрудники КАК Сотрудники
      |ГДЕ
      |   Сотрудники.ТА_ПолучатьУведомления
      |   И Сотрудники.ТА_UIN > 0
      |УПОРЯДОЧИТЬ ПО
      |   Сотрудники.ТА_UIN";
   
   РезультатЗапроса = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   СписокПолучателейМассив = Новый Массив;
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл      
      СписокПолучателейМассив.Добавить(ВыборкаДетальныеЗаписи.UIN);      
   КонецЦикла;
   
   //Список потенциальных именинников
   Запрос = Новый Запрос;
   Запрос.Текст = 
      "ВЫБРАТЬ
      |   Сотрудники.ФизическоеЛицо.ФИО КАК ФИО,
      |   Сотрудники.ФизическоеЛицо.ДатаРождения КАК ДатаРождения,
      |   Сотрудники.ТА_UIN КАК UIN
      |ИЗ
      |   Справочник.Сотрудники КАК Сотрудники
      |ГДЕ
      |   Сотрудники.ТА_РассылатьУведомленияОДР
      |   И Сотрудники.ФизическоеЛицо.ДатаРождения <> &ПустаяДата";
   
   Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));
   РезультатЗапроса = Запрос.Выполнить();
   ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      
      ЧислоСутокДоДняРожденияДляНапоминания1 = 3;
      ЧислоСутокДоДняРожденияДляНапоминания2 = 0;
      
      СегодняшнийДень = НачалоДня(ТекущаяДата());
      ДатаНапоминания1 = (Дата(Год(СегодняшнийДень), Месяц(ВыборкаДетальныеЗаписи.ДатаРождения), День(ВыборкаДетальныеЗаписи.ДатаРождения)) - ЧислоСутокДоДняРожденияДляНапоминания1 * 24 * 3600);
      ДатаНапоминания2 = (Дата(Год(СегодняшнийДень), Месяц(ВыборкаДетальныеЗаписи.ДатаРождения), День(ВыборкаДетальныеЗаписи.ДатаРождения)) - ЧислоСутокДоДняРожденияДляНапоминания2 * 24 * 3600);
      
      Если СегодняшнийДень <> ДатаНапоминания1 И СегодняшнийДень <> ДатаНапоминания2 Тогда
         Продолжить;
      КонецЕсли;
      
      UINИменинника = Строка(ВыборкаДетальныеЗаписи.UIN);
      
      Для Счетчик = 0 По СписокПолучателейМассив.ВГраница() Цикл
         
         UINПолучателя = Строка(СписокПолучателейМассив[Счетчик]);
         Если UINИменинника = UINПолучателя Тогда
            Продолжить;
         КонецЕсли;
         
         ТекстСообщения = 
            "Напоминание: " + 
            Строка(День(ВыборкаДетальныеЗаписи.ДатаРождения)) + " " + 
               ПолучитьНаименованиеМесяца(Месяц(ВыборкаДетальныеЗаписи.ДатаРождения)) +
               " празднует день рождения "
               + ВыборкаДетальныеЗаписи.ФИО;
               
         ОтправитьСообщениеОдномуПользователю(ПодключениеКMyChat, UINПолучателя, ТекстСообщения);      
      КонецЦикла;      
   КонецЦикла;         
   ПодключениеКMyChat = Неопределено;   
КонецПроцедуры
DevСравнение данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS, табличный документ)#13 17.11.17 22:24
Версия 7.2.21:
реализована возможность использования параметров запроса при подключении к текущей базе 1С 8 (параметры ДатаНачала и ДатаОкончания берутся только с вкладки Общие настройки -> Основные даже в том случае, если одноименные есть на вкладке Параметры запроса);
исправлена ошибка, из-за которой в настройках не сохранялся номер первой строки файла.
DevСравнение данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS, табличный документ)#12 16.11.17 15:55
Версия 7.1.20:
исправлена ошибка, из-за которой в некоторых случаях сравнение по составному ключу производилось некорректно.
DevВоспроизведение звука средствами Windows#28 05.10.17 9:02
Благодарю, чувак! Сэкономил кучу нервов и времени коллеге. Плюс 1 в карму.
DevКонсоль запросов 1С 8 / SQL#8 29.06.17 17:38
Версия 5.0.35:
исправлена ошибка, из-за которой в Такси появлялся ненужный вертикальный скролл
DevДокумент Пересортица товаров (Бухгалтерия 3.0, Бухгалтерия для Беларуси 2.1)#0 28.06.17 12:43
Документ предназначен для устранения пересорта между товарами, как между разными, так и между одинаковыми, т.е. между партиями. Разница списывается/приходуется на указанные счета.
DevСравнение данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS, табличный документ)#10 25.05.17 12:32
(8)
1)
Код
 ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(ДАТАВРЕМЯ(2017, 1, 1), ) КАК ЦеныНоменклатурыСрезПоследних


2)
Код
ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаНачала, ) КАК ЦеныНоменклатурыСрезПоследних


а на вкладке консоли Общие настроки -> Основные нужно в левую границу периода внести нужную дату среза цен
DevСравнение данных из разных источников (1С 8, SQL, CSV/TXT/DBF/XLS, табличный документ)#7 12.03.17 19:27
Версия 7.1.19:
увеличена длина и точность типа Число реквизитов.