Версия для печати темы (https://pro1c.org.ua/index.php?showtopic=14270)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Дополнительные колонки
Автор: Ardi 16.09.13, 16:32
Допустим есть журнал "Реализация". В требуется вывести дополнительные колонки.
Наподобие "Есть расходный ордер", "Возврат", "Перечень номенклатуры документа", "Есть ПКО", "Есть банк" и т.д.
Делать это запросами к куче таблиц надоело.
Хочется завести какой нибудь вспомогательный объект для хранения данных и изменять его подписками на события например.
Подскажите чего нибудь хорошего.
Автор: logist 16.09.13, 17:15
Регистр сведений: измерение - Объект, ресурсы - необходимые значения.
Автор: Vofka 17.09.13, 7:50
Мне кажется, что лучше написать 1 раз нормальный запрос, в который будет легко добавлять новые данные, чем создавать новые объекты метаданных для этого. Потому как для запонения того же регистра сведений всеравно прийдется делать
Цитата(Ardi @ 16.09.13, 17:32)
запросами к куче таблиц
Автор: logist 17.09.13, 8:04
Цитата(Vofka @ 17.09.13, 8:50) http://pro1c.org.ua/index.php?act=findpost&pid=74695
изменять его подписками на события например.
При записи того или иного документа делается запись в регистр, какие еще запросы?
Автор: Vofka 17.09.13, 8:06
Цитата(logist @ 17.09.13, 9:04)
При записи того или иного документа делается запись в регистр, какие еще запросы?
Для того, чтобы данные записать в нужном виде их необходимо как-то/откуда-то получить. "Как-то" - это скорей всего с использованием запросов. Ваш Кэп.
Автор: logist 17.09.13, 8:43
Данные в нужном виде это и есть документ Источник события. который, например, по полю Основание = Объект в РС запишет данные о себе. Не надо никаких запросов.
Автор: Vofka 17.09.13, 10:05
Цитата(logist @ 17.09.13, 9:43) http://pro1c.org.ua/index.php?act=findpost&pid=74702
Наподобие "Есть расходный ордер", "Возврат", "Перечень номенклатуры документа", "Есть ПКО", "Есть банк" и т.д.
можно взять из источника события, т.е. в данном случае из расходной накладной? Как же...
Автор: logist 17.09.13, 10:59
"Есть расходный ордер" - при записи Источника ордера в нем же есть ссылка на документ Объект? При записи Источника возврата в нем же есть ссылка на документ Объект?....
Я говорю о том, что записи в регистр должен делать не сам Объект, а документы которые связаны с этим Объектом по полю которое определяет связь.
Автор: Ardi 17.09.13, 11:49
Цитата(logist @ 17.09.13, 11:59)
Я говорю о том, что записи в регистр должен делать не сам Объект, а документы которые связаны с этим Объектом по полю которое определяет связь.
Именно. (Например ПКО вводится на основании РН. Центральным документом сделки будет заказ либо РН если заказ не заполнен).
И я спрашиваю какие есть интересные варианты
в каком дополнительном объекте хранить связанную инфу.
Пока только одно предложение.
Автор: Vofka 17.09.13, 12:01
А, ну я знач не так изначально понял. Тогда, тут только 1 вариант может быть: только регистр сведений. Если сделать как по проще, то выше logist вариант озвучил. Но можно сделать по сложнее, но, по-моему, красивше будет: сделать 2 измерения Объект и НазваниеДопКолонки. Название доп. колонки - это может быть какое-то перечисление либо какой-то справочник. Работать с такой структурой будет сложнее, за то структура хранения данных будет корректнее и без излишек, я считаю.
Автор: python 17.09.13, 12:36
Vofka, какой тогда тип данных у значения регистра сведений будет? И как оно потом в БД хранится?
А отборы планируется строить по этим колонкам дополнительным?
Автор: Vofka 17.09.13, 12:39
python, я не знаю конечной цели, мог бы предположить, что на все хватит типа "строка". Если тип должен быть разный, тогда использовать план видов характеристик (по типу как настройки пользователя сделаны).
Автор: Ardi 17.09.13, 12:47
Цитата(Vofka @ 17.09.13, 13:01) http://pro1c.org.ua/index.php?act=findpost&pid=74726
А отборы планируется строить по этим колонкам дополнительным?
А если вдруг потребуется - то тогда какие объекты использовать?
Автор: Vofka 17.09.13, 12:51
Цитата(Ardi @ 17.09.13, 13:47)
При пометке на удаление ПКО запись из регистра удалится. А если ПКО 2 штуки - то одна запись должна остаться.
Тогда 3 измерения: Регистратор, ВладелецСвойства (расходная накладная, в данном случае), Свойство.
Автор: Zaval 17.09.13, 13:49
Цитата(Ardi @ 17.09.13, 13:47)
При пометке на удаление ПКО запись из регистра удалится. А если ПКО 2 штуки - то одна запись должна остаться.
А что дает сам факт наличия ПКО? Или возврата?
По-доброму нужно примероно так
Заказ
Отгружено на ... грн
Оплачено на ... грн
Выписано НН на ... грн
Возврат на ... грн
А еще лучше сразу выводить отклонения? нпр "недовыписано НН на ... грн. Тогда юзеру не придется вчитываться в цифры и сравнивать их.
Или не цифры, а колечки, как в УНФ.
Автор: python 17.09.13, 13:53
Какова все же цель этих реквизита? Тип данных содержания?
Если текстовая метка для журнала - так можно просто регистр сведений, и значение каждой из колонок отдельно для объекта хранить. Придется менять метаданные - это да. Но и код для извлечения и вывода данных будет проще. В принципе - и тип данных может быть разным...
Неопределенный тип данных значения и вид свойства в измерении - 1с создаст несколько полей для хранеия каждого из типов значения, не хорошо это.
Еще вариант - значения хранить в отдельном справочнике, пусть даже текстовые. Тогда и отборы можно будет строить.
Автор: Домовик 17.09.13, 14:20
нужно нарисовать дерево всех возможных решений, отталкиваясь от центрального документа. Обозвать каждую точку-состояние как-то и описать, чтоб понятно было пользователю (пример "РН-Возврат-РКО"). При совершении события (проведении дока, пометке на удал, снятии пометки на удал,.... ) изменяем точку-состояние, на другую точку-состояние (точки-состояния хранятся не знаю где). В журнале "Реализация" ссылка на точку-состояние.
Автор: Zaval 17.09.13, 14:39
Цитата(Vofka @ 17.09.13, 13:01) http://pro1c.org.ua/index.php?act=findpost&pid=74726
нужно нарисовать дерево всех возможных решений, отталкиваясь от центрального документа. Обозвать каждую точку-состояние как-то и описать, чтоб понятно было пользователю (пример "РН-Возврат-РКО"). При совершении события (проведении дока, пометке на удал, снятии пометки на удал,.... ) изменяем точку-состояние, на другую точку-состояние (точки-состояния хранятся не знаю где). В журнале "Реализация" ссылка на точку-состояние.
Дерево получится, нпр, для статуса документа. Оплату и возврат в одно дерево не запихнешь.
Автор: python 17.09.13, 14:51
А не лучше ли заменить журнал на обработку?
Автор: Vofka 17.09.13, 15:15
Цитата(Zaval @ 17.09.13, 15:39)
Думаю, так лучше не делать.
Почему?
Автор: Домовик 17.09.13, 15:50
Цитата(Zaval @ 17.09.13, 10:39)
Дерево получится, нпр, для статуса документа. Оплату и возврат в одно дерево не запихнешь.
я, наверное, не понимаю, что имеется в виду у вас.
у меня "точка-состояние" - это не событие (оплата или возврат), а комбинация,(или последовательность) событий.
как у любого дерева : одной точке будет соответствовать предыдущая точка, и несколько возможных следующих точек (в том числе и предыдущ).
если в программе определена будет описана логика возможных вариантов по "развитию" документа РН, тогда можно будет не только строить журнал "реализация", а можно будет выводить другие формы.
но нужно предусмотреть вариант частичных оплат, отгрук..
Автор: Zaval 17.09.13, 15:54
Более сложно выдергивать данные.
Скорее всего, это только начало. Юзерам понравится, начнут еще придумывать
Да и без этого, получится длиннющий РС, по которому будут одновременно топтаться все юзеры
Автор: Vofka 17.09.13, 16:10
Цитата(Zaval @ 17.09.13, 16:54) http://pro1c.org.ua/index.php?act=findpost&pid=74755
Скорее всего, это только начало. Юзерам понравится, начнут еще придумывать
Да и без этого, получится длиннющий РС, по которому будут одновременно топтаться все юзеры
Не вижу проблем с этим. За то в обмен не будет излишних данных.
В случае регистра с контактной информацией - его беда в том, что поля называются Поле1, Поле2 ... ПолеN. Регистр этот был бы нормальным если бы поля назывались человекопонтяно либо если бы ресурс был 1, а взамен было 1 дополнительное измерение, которое идентифицировало бы конкретную составляющую адреса. Да, может быть тогда запрос получится не просто "ВЫБРАТЬ * ИЗ Регистр", может быть он будет дольше выполняться, за то в таблице базы данных все данные будут согласованы и не будет мусора. Это мое мнение.
Автор: Домовик 17.09.13, 16:12
имея дерево состояний нельзя будет, к примеру, просто так пометить на удаление документ, на котором завязаны другие документы. потому-что они будут уровнем ниже в дереве. также нельзя будет ввести просто так РКО, когда будет БВ с таким же движением. так как это тоже будет "перескок" на другую ветку.
ну в общем, да. я не программирую, поэтому не могу подать предметно это все дело. поэтому про зайчиков, что хотят стать ёжиками.
Автор: Zaval 17.09.13, 16:19
Домовик, я вот о чем.
Состояние,нпр, "оплачен+отгружен+отправленыБухДокументы" может быть достигнуто разными путями - разная последовательность событий. Это уже не дерево, в дереве путь между двумя точками уникален.
Автор: Домовик 18.09.13, 6:28
ну вообще-то изначалоьно имелось в виду, что "оплачен-отгружен-отправленыБухДокументы" и "отгружен-оплачен-оправленыБУхДокументы" -два разных состояния. состояния сохраняют история событий, но состав событий у них один и тот же.
дерево это ж вид графа. значит просто граф. направленный граф.
есть логика в связи между событиями. т. е . "Оплата нам" ожидает "Отгрузку от нас"(и наоборот) . состояние характеризуется еще тем, что оно может быть завершенными и незавершенным. В случае возврата оно из стадии завершенного может перейти в незвершенное.
т. е уже формируются понятия
-событие (может исполняться разными документами)
-состояние (характеризуетс набором событий, направленностью событий , завершенностью/ незавершенностью)
вобщем, логику по которой бухгалтера отслеживают движения документов, можно также программно задать. Не только задавать механизми отслеживания.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua