Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Дозаполнение ТЧ документа "забытыми" или "новыми" данными из справочника          
Constantus Подменю пользователя
сообщение 27.08.18, 8:18
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Имеется самописные справочник "Сотрудники" и самописный документ "Начисление заработной платы.

В документе "Начисление" ТЧ заполняется автоматически по кнопке. Код обходит справочник "Сотрудники" и по определенному алгоритму заполняет нужных сотрудников в ТЧ документа "Начисление".

Код работает правильно и без проблем. Но столкнулся со следующей проблемой.

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

Конечно, можно взять и нажать вышеупомянутую кнопку и ТЧ "Начисления" заполнится новым правильным списком, но данные расчета по "старым" сотрудникам естественно затруться и расчет нужно будет проводить заново, что крайне плохо...

Каким образом можно сделать при заполнении ТЧ документа проверку, что по такому-то сотруднику уже есть данные в ТЧ и добавлять его не нужно, т.е. оставить данные ТЧ не измененными? Т.е. дозаполнить ТЧ только "новыми" или "забытыми" сотрудниками?

andr_andrey Подменю пользователя
сообщение 27.08.18, 8:51
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 623
Спасибо сказали: 166 раз
Рейтинг: 130.8

Constantus @ Сегодня, 9:18 * ,
В стандартных решениях делают кнопку "Рассчитать по сотруднику".


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

Constantus Подменю пользователя
сообщение 27.08.18, 11:21
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Придумал "гениальнейшее решение".
В ТЧ справочника ввел новый реквизит "ИД" (текст, 200)

При создании новой записи в ТЧ справочника добавил код:

Элемент.ТекущиеДанные.ИД = Новый УникальныйИдентификатор;


Уникальный код создается типа: d831cd77-2b82-42b1-9153-9b1a44831329

Вот теперь планирую этот код вставлять в ТЧ документа и при добавлении (обновлении) данных ТЧ сравнивать этот код с "новыми забытыми" сотрудниками... Типа если такой код есть, то ничего не предпринимать...

Теперь тогда вопрос: насколько это гениальное решение гениально? Где подводные валуны?

Bernet Подменю пользователя
сообщение 27.08.18, 11:31
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 858
Из: Місто щасливих людей
Спасибо сказали: 317 раз
Рейтинг: 0

Constantus @ Сегодня, 12:21 * ,
Можно и проще:
1. Перед перезаполнением таб части выгружаете её в таблицу значений
КопияТЧ = ВАШАТАБЧАСТЬ.Выгрузить();

2. Очищаем ТЧ. В момент заполнения ищете сотрудника в выгруженной шагом ранее таблице, если он там есть заполняете строку таб части через данные из таблицы значений, иначе добавляете просто новую строку
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("Сотрудник", ВашСотрудник);
НайденныеСтроки = ВАШАТАБЧАСТЬ.НайтиСтроки(СтруктураПоиска);
Если НайденныеСтроки.Количество() = 0 Тогда
    НоваяСтрока = ВАШАТАБЧАСТЬ.Добавить();
Иначе
    НоваяСтрока = ВАШАТАБЧАСТЬ.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденныеСтроки[0]);
КонецЕсли;


Сообщение отредактировал Bernet - 27.08.18, 11:32


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Flexy Подменю пользователя
сообщение 27.08.18, 16:02
Сообщение #5

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

ТекСотрудники = ТабСотрудники.ВыгрузитьКолонку("Сотрудник");
ТаблицаНеПустая = ТекСотрудники.Количество() > 0;
Запрос.Текст = "
|ВЫБРАТЬ
|    Сотруники.Ссылка
|ИЗ
|    Справочник.Сотрудники КАК Сотрудники
|ГДЕ
|    ВЫБОР КОГДА &ТаблицаНеПустая ТОГДА Сотрудники.Ссылка НЕ В (&ТекСотрудники) ИНАЧЕ ИСТИНА КОНЕЦ

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 1:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!