Показаны сообщения с ярлыком 1С Разработка. Показать все сообщения
Показаны сообщения с ярлыком 1С Разработка. Показать все сообщения

1С Предприятие 8.3. Изменяем форму справочника, и переносим ее на внешнюю обработку с выводом доп. столбца

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

Добавляем к выводу Реквизит Расценка из Регистра сведений РасценкиРаботСотрудников.СрезПоследних, в связях автоматически добавилась связь, к сожаление не совсем корректная, вместо левого соединения делаем правое.
Сохраняем все, и переносим Динамический список на форму, оставляя только необходимые реквизиты


Сохраняем обработку как внешнюю, и пробуем.
Полученный результат ниже


1С 8.3. Загрузка детализации Мегафона в формате HTML в табличную часть документа


Разбирать странички с помощью 1С довольно удобно, в 1С реализована модель DOM, поэтому можно парсить не регулярными выражениями, а собственно с помощью DOM.
Мой первый опыт работы с DOM в 1С выкладываю на общее обозрение.
Обработку можно скачать с Google Drive
p.s. Загружает детализацию мегафона в формате html для корпоративных клиентов.

ЗУП, HTTP Сервис, и уведомлялка о днях рождениях на C#

Задача выводить список именинников из базы 1С 8.3 ЗиУП, а так-же показывать ближайшие дни рождения, легче всего сделать отчет в 1С, но пошел дальше, и освоил объект конфигурации HTTP-сервис.
На самом деле ничего тяжелого, создаем HTTP сервис который по GET запросу будет производить запрос на стороне 1С сервера, и возвращать нам необходимые данные.
Решил не морозится с JSON, и просто полученный массив данных вывести разделителями, и на клиенте C# распарсить.
Код модуля HTTP-сервиса: https://pastebin.com/kT2Cd90ZСтруктура HTTP-сервиса:
 Программа на C#:

Скачать исходный код программы: на Google Drive

Алгоритм настройки:
1. Создаем HTTP сервис с указанным модулем.
2. Публикуем сервис на web-сервере
3. Открываем исходники и меняем данные авторизации на сервер  в программе на свои
4. Компилим, и наслаждаемся

1С 7.77 ЗиК: msxml3.dll недостаточно памяти для завершения операции


Проблему совместимости 32 битных приложений с работой over 2gb оперативной памяти, выскакивает ошибка, ибо приложение не умеет в 2 и больее гигабайт.

Было задание перенести базу из 1С 7.77 ЗиК в 1С 8.3 ЗУП, используя штатные средства я потерпел горе-поражение, миграция не удалась, зависание и ошибка.

Нашел хорошую статью где предлагают переносить данные с помощью стандартной обработки, сама статья тут (кэш google)

Проблема возникла неожидано, работа шла успешным ходом, но вскоре выскочила ошибка msxml3.dll недостаточно памяти для завершения операции.

Я попробовал несколько разных способов:
  • Использование серверной windows server 2003 ( не помогло )
  • Использование ноутбука с 8 gb озу ( не помогло )
  • Выгружать частями ( не помогло с конкретными сведениями )
Решение нашлось на форуме, необходимо пропатчить приложение для работы с 4gb, программа для патчей хорошая, минималистичная, после данных телодвижений у меня легко получилось выгрузить все что нужно.

Перейти на официальный сайт разработчика -> click <-
Спасибо людям делающие потрясные программные решения.

p.s. стандартный перенос из ЗиКа в ЗУП отлично работает с патченной версией 1С 7

1С 8.3 ЗУП: Тариф платежного агента меняется при записи?


Проблема: 
Тариф платежного агента сохраняется некорректно, округляется, значения после записи другие.

Решение: 
Открываем конфигуратор 1С Предприятия 8.3 для нашей базы ЗУП. Открываем конфигурацию для редактирования.
Открываем форму ФормаЭлемента в справочнике ТарифыПлатежныхАгентов
Открываем модуль.
Смотрим две последние функции СуммаПриПроцентеСПревышенияПоСумме и СуммаПоСуммеПриПроцентеСПревышения
В ней мы видим что функция возвращает результат исправленный в соответствии с предыдущим порогом, комметируем Возвраты функций.
Вместо комментированного пишем:
Возврат ТекущаяСтрока.Сумма;   - в первой функции.
Возврат ТекущаяСтрока.СуммаПриПроцентеСПревышения;  - во второй функции.

Теперь при записи тарифов суммы они не будут меняться.

1С 8.3 ЗУП: Перерасчет северной надбавки на основе уже имеющегося стажа

Северный стаж и надбавка в Зарплате и управлением персоналом - больная тема.
Проблема №1: При трудоустройстве человек имеет стаж северный 7 месяца (допустим 2 группа льготная), имеет уже надбавку 20 процентов, в итоге при принятии на работу месяц наработанный сверху 6 месяцев пропадает.
Поля ввода стажа работы на севере - не работают, для чего указываются не понятно.
Поэтому приходиться самому высчитывать правильный стаж, в данном случае 1С заполняет будущие значения очень механически, не думая об исключениях, а они есть.
Поэтому придумано такое решение:
  1. Открываем конфигурацию для редактирования с сохранением поддержки.
  2. Справочник - ФизическиеЛица - ФормаРедактированияПроцентаСевернойНадбавки 
  3. Редактируем собственно эту форму, и добавляем желанную кнопку
Верное использование алгоритма неминуемо приведет к верному результату :) 
  1. Добавляем на форму кнопку, назовем ее ПодсчетСтажа.
  2. На вкладке команды создаем Команду с названием ПодсчетСтажаНаОснове.
  3. В параметрах команды, в свойстве Действие пишем: ПодсчетСтажаНаОснове
  4. Далее переходим на вкладку Модуль, двигаемся  в самый низ редактора исполняемого кода, и добавляем процедуру ПодсчетСтажаНаОснове выполняться она будет на клиенте.
  5. Исходный код
&НаКлиенте
Процедура ПодсчетСтажаНаОснове(Команда)
   ДатаПриема = ЭтотОбъект.ДатаСтажа;
   ДатаПриема = ДобавитьМесяц(ДатаПриема, -ЭтотОбъект.МесяцевСтажа);
   ДатаПриема = ДобавитьМесяц(ДатаПриема, -ЭтотОбъект.ЛетСтажа*12);
   ДатаПриема = ДатаПриема - ЭтотОбъект.ДнейСтажа*60*60*24;
   ЭтотОбъект.ПроцентыСевернойНадбавкиФизическихЛицНаборЗаписей.Очистить();
   ПерерасчетСтажаЛич = Новый Структура;  
   ПерерасчетСтажаЛич.Вставить("Период",ДатаПриема);
   ПерерасчетСтажаЛич.Вставить("ПроцентСевернойНадбавки","0");
   ЗаполнениеТЧ = ЭтотОбъект.ПроцентыСевернойНадбавкиФизическихЛицНаборЗаписей.Добавить();
   ЗаполнитьЗначенияСвойств(ЗаполнениеТЧ,ПерерасчетСтажаЛич);
   ЗаполнитьБудущиеИзмененияСДаты(Истина);
КонецПроцедуры

Очень краткое руководство:
  1. В поле вид стажа выбираем стаж работы на севере.
  2. В поле на дату пишем дату приема. 
  3. Указываем количество лет, месяцев, и дней.
  4. Нажимаем на кнопку Подсчитать стаж исходя из общего стажа.
Осознал что как-то не грамотно названы кнопки, и процедура, т.к. мы считаем северную надбавку в прошлом и будущем, а не стаж, оставлю свою ошибку на обозрение, и впредь постараюсь не допускать таких логических и лексических ошибок.