Версия для печати темы (https://pro1c.org.ua/index.php?s=6a0791da8d84b8e2c4a6f1b97a5dc0dc&showtopic=45381)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование управляемых форм 1С 8.2 _ Записать данные оборотов регистра накопления в таблицу значения

Автор: Gigi 21.04.18, 11:13

Всем привет!
Гууу ... вообще в дни не будние активность на сайте может меньше, но вынужден опять выходить на форум ...
Ауууу... эта платформа действительно доведет до психоза.
Короче ..даже не знаю с чего начать .. просто замучился ... опять по ерунде. Главное неоднократно слышал что должен бросить это дело ... да уж бросить.. тогда когда уже столько всего сверстал и внедрил.
Ну я просто поражаюсь ... почему смотришь на сайтах статьи видео ролики... век широких возможностей .. где даже репетитор не нужен. Потому что есть интернет и вроде бы это дает возможность многому научиться и без репетитора.
В особенности удобно смотреть видео уроки ... все наглядно и понятно ... казалось бы не должны быть проблемы... но все равно ...... все равно зараза... опять проблемы... даже при таких широких возможностей в наш век.
И почему делаешь ровно то, что говориться в видео уроках но в итоги, на экране видео все работает а у тебя на первом же шагу останавливается. Так и хочется клавиатурой по монитору еб...ть.
Ладно... извините .. просто опять достали эти проблемы. И опять на каждом сантиметре встречать препятствие и буквально каждый сантиметр приходиться аж отвоевывать. Главное по какой то х..не
Поэтому сразу к делу... И скажу конкретно.
Вот видео ролик:
http://pro1c.org.ua/redirect.php?https://www.youtube.com/watch?v=7QOP0lHqtzs
Правда там говориться как это сделать в толстом клиенте. Но я лично нигде не нашел то же самое только для тонкого клиента.
Речь о чем? Стандартным путем вытащить данные из рега накопления не проблема. Меня не устраивает то что опять навязывает платформа.
Мне не нужен этот формат отчета который выползает когда делаешь через СКД и через конструктор. А нужно все сделать по своему усмотрению. Так что хотел опять избавиться от того что навязывает стандарт.
Именно поэтому рыл усердно, но в основном натыкался на то как сделать по стандарту самый простой отчет рега накопления путем конструктора. И нигде не говориться о том, как тем же самым конструктором сделать любой отчет в любом нужном формате. Поэтому не охота тратить время на долгое разбирательство с этим конструктором и вдруг бац и наткнулся на этот видео ролик. Один единственный наверно в на просторах интернета. И подумал.. наконец то ... нашел что что нужно. Наконец то ...Но все затупилось на первом же шагу... на этой команде:

ТЗ_регаНакопления=РегистрыНакопления.ИмяРегаНакопления.Обороты();
//ТЗ_регаНакопления=РегистрыНакопления.ИмяРегаНакопления.Обороты(Дата_Начало,Дата_Конец);
Сообщить(ТЗ_регаНакопления.Количество()); // В обоих случаях ничего не делает. А выдает НОЛЬ! Хотя запись в реге накопления НЕ ПУСТО!!!!!

Прошу вас ... умоляю ... объясните... ЧТО ЭТО ТАКОЕ!
И извините за опять за речи ... рассчитываю на Ваше понимание. Потому что действительно .. вроде век технологий не все равно топишься на одном месте ... по каким то опять пустякам.
Буду очень притязателен!
Как никогда..

Автор: Gigi 21.04.18, 15:22

Gigi @ Сегодня, 11:13 * ,
Ладно ... извините за эмоциональные слова...
Еще раз ИЗВИНИТЕ!
Тогда скажу по другому.
И думаю сделать по другому, что бы зависит только от того что нужно. Т.е. иметь более свободное поле для действий ... да хоть пустить строки отчета не по горизонтали и вертикали, а по диагонали. Или и вовсе данные текста отчета вывести вниз головой .. образно говоря. Т.е. делать ВСЕ ЧТО УГОДНО!!!! А не то что навязывается системой . Понятное дело что наверняка есть много возможностей но вникать долго.
Поэтому решил иначе.
Что нужно для этого?
Нужен код списка промежутка периода.
Ну на пример промежуток Даты1: 01.01.2018 и Даты2: 01.04.2018
Нужен список всех записей на пример в указанном промежутке.
При чем отфильтрованный от присутствия одинаковых значений отчетного месяца.
На пример документы формируются в месяц один раз. Поэтому каждый документ в реге накопления имеет одинаковое число... условно 28-ое. А год и месяц в рег записывается в зависимости от года и месяца отчета.
Т.е. для записи в рег накопления дата проведения документа в моем случае не имеет никакого значения. Потому что реквизит период в обработке проведения получает сгенерированную дату согласно отчетному месяцу.
Кроме того в реге накопления есть измерение с типом строка: "ОтчетныйМесяц". Который формируется синтезом:

Строка(Месяц)+" "+Строка(Год)+" г."

Так вот, нужен список значений именно этого измерения на пример на указанный промежуток даты. И не просто список, а список с фильтром отсутствия одинаковых значений измерения: "ОтчетныйМесяц".
Вот что нужно.
Остальное думаю можно самому сделать.
Именно это уже даст возможность самому решать что и как сделать. И не от чего не зависть а зависит только от себя.
Ладно... Еще раз извините ...
Буду признателен!

Автор: Vofka 23.04.18, 8:21

Gigi, читайте про запросы.

Автор: andr_andrey 23.04.18, 8:39

Цитата(Gigi @ 21.04.18, 12:13) *
Ну я просто поражаюсь ... почему смотришь на сайтах статьи видео ролики... век широких возможностей .. где даже репетитор не нужен. Потому что есть интернет и вроде бы это дает возможность многому научиться и без репетитора.

Научиться может только тот, кто хочет учиться. А тот кто хочет готовых рецептов - должен страдать. 32541510.gif

Автор: Gigi 03.05.18, 17:32

Цитата(andr_andrey @ 23.04.18, 8:39) *
Научиться может только тот, кто хочет учиться. А тот кто хочет готовых рецептов - должен страдать.

Да какие готовые рецепты smile.gifsmile.gif В том и дело что учимся и мучимся на свою голову.
Поэтому все таки хотел продолжить тему ..
Цитата(Vofka @ 23.04.18, 8:21) *
читайте про запросы.

Да читал я ... просто указанный в ролике способ очень удобен .. и охота таким путем. А не другим.
Короче ... вынужден продолжить тему.... потому что вопрос не решен.
Вот код:
&НаСервере
Процедура Тест(РегистрНакопленияИмя,ДатаНачало,ДатаКонец)
ТЗ_Обороты=РегистрыНакопления[РегистрНакопленияИмя].Обороты(ДатаНачало,ДатаКонец,,"Измерение1","Ресурс1");
Для Каждого Строка Из ТЗ_Обороты Цикл
Сообщить(Строка.Измерение1); // Тут без проблем
Сообщить(Строка.Ресурс1); // А тут выдает ошибку и пишет: "Поле Ресурс1 не найдено". Хотя ресурс с таким именем создан!
КонецЦикла;
КонецПроцедуры

Ну объясните мне пожалуйста ... почему ну никак не найдет этот долблённый е..ный ресурс.smile.gifsmile.gif
ПОООО-ЧЕЕЕЕ-МУУУУУ!!!! Хочеться просто выть от ярости! smile.gifsmile.gif
Буду признателен!


Автор: logist 03.05.18, 20:14

Цитата(Gigi @ 03.05.18, 18:32) *
Ну объясните мне пожалуйста ... почему ну никак не найдет этот долблённый е..ный ресурс.

Потому что надо научить себя читать синтаксис-помощник, и/или смотреть в отладчик на таблицу, а не методом тыка. В результирующей таблице, для регистров накопления, колонки ресурсов имеют другие имена. Дальше сами разбирайтесь.

Автор: Gigi 04.05.18, 7:47

logist @ Вчера, 20:14 * ,
Я уже разобрался ... до совета смотрел в СП. Что делать не люблю из за скупости изложения информации. Но в данном случае оно пошел на пользу
Нужно было вот так

&НаСервере
Процедура Тест(РегистрНакопленияИмя,ДатаНачало,ДатаКонец)
ТЗ_Обороты=РегистрыНакопления[РегистрНакопленияИмя].Обороты(ДатаНачало,ДатаКонец,,"Измерение1","Ресурс1");
Для Каждого Строка Из ТЗ_Обороты Цикл
Сообщить(Строка.Измерение1);
Сообщить(Строка.Ресурс1Приход); // или Сообщить(Строка.Ресурс1Расход);
КонецЦикла;
КонецПроцедуры

Так нормально заработало.
Но в таком случае уже другие вопросы.
1) Почему в видео ролике было без частиц: "Приход\Расход". Там никакой ошибки не было smile.gifsmile.gif .. неужели из-за тонкий-толстый клиент? Команды ведь одинаковые.
2) Ну ладно можно и с частицами: "Приход\Расход". Но тогда как вытащить любые данные. Вне зависимости от прихода или расхода.
Если не трудно код пожалуйста.
Буду признателен!

Автор: logist 04.05.18, 12:38

Цитата(Gigi @ 04.05.18, 8:47) *
Почему в видео ролике было без частиц: "Приход\Расход". Там никакой ошибки не было

Потому что вам надо внимательно посмотреть ролик и внимательно читать синтаксис-помощник.

Автор: Gigi 04.05.18, 13:28

logist @ Сегодня, 12:38 * ,

РегистрНакопленияМенеджер.<Имя регистра накопления> (AccumulationRegisterManager.<Имя регистра накопления>)

Цитата
РегистрНакопленияМенеджер.<Имя регистра накопления> (AccumulationRegisterManager.<Имя регистра накопления>)
Обороты (Turnovers)
Синтаксис:

Обороты(<НачалоПериода>, <КонецПериода>, <Отбор>, <Измерения>, <Ресурсы>)
Параметры:

<НачалоПериода> (необязательный)

Тип: Дата; МоментВремени; Граница.
Момент времени, начиная с которого необходимо получить обороты. Если параметр не указан, то обороты будут получены начиная с момента ведения базы данных. Если в качестве параметра передана Дата или МоментВремени, то обороты за указанную дату (момент времени) будут включены в результирующую таблицу значений.
<КонецПериода> (необязательный)

Тип: Дата; МоментВремени; Граница.
Момент времени, определяющий конец периода за который необходимо получить обороты. Если параметр не указан, то обороты будут получены до самого позднего движения регистра. Если в качестве параметра передана Дата или МоментВремени, то обороты за указанную дату (момент времени) будут включены в результирующую таблицу значений.
<Отбор> (необязательный)

Тип: Структура.
Структура, содержащая набор значений измерений регистра, по которым надо отбирать обороты. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение.
Если параметр не указан, то отбор не используется.
<Измерения> (необязательный)

Тип: Строка.
Список измерений, для которых надо разворачивать обороты. Строка, содержащая имена измерений, разделенные запятыми. Если параметр не указан или указана пустая строка, то обороты будут сформированы по всем измерениям.
Значение по умолчанию: Пустая строка.
<Ресурсы> (необязательный)

Тип: Строка.
Список ресурсов, для которых надо получить обороты. Строка, содержащая имена ресурсов, разделенные запятыми.
Если параметр не указан или указана пустая строка, то обороты будут сформированы по всем ресурсам.
Значение по умолчанию: Пустая строка.
Возвращаемое значение:

Тип: ТаблицаЗначений.

Описание:

Получает обороты регистра накопления за заданный период времени. Есть возможность фильтрации по значениям измерений. Возвращает таблицу значений, содержащую колонки с измерениями, указанными в параметре Измерения, и по две колонки на каждый ресурс, указанный в параметре <Ресурсы>.
Названия колонок для ресурсов формируются следующим образом: для регистров остатков: "<Имя ресурса>Приход" и "<Имя ресурса>Расход" или "<ИдентификаторРесурса>Receipt" и "<ИдентификаторРесурса>Expense"; для регистров оборотов: "<Имя ресурса>".

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Пример:

Остатки = РегистрыНакопления.Остатки;
Фильтр = Новый Структура();
Фильтр.Вставить("Номенклатура", ВыбНоменклатура);
Фильтр.Вставить("Склад", ВыбСклад);
ТабОборотов = Остатки.Обороты(ДатаНач, ДатаКон, Фильтр,
"Номенклатура,Склад", "Количество");



Gigi @ Сегодня, 13:22 * ,
В особенности этот фрагмент прикалывает smile.gif
Цитата
Описание:
Получает обороты регистра накопления за заданный период времени. Есть возможность фильтрации по значениям измерений. Возвращает таблицу значений, содержащую колонки с измерениями, указанными в параметре Измерения, и по две колонки на каждый ресурс, указанный в параметре <Ресурсы>.
Названия колонок для ресурсов формируются следующим образом: для регистров остатков: "<Имя ресурса>Приход" и "<Имя ресурса>Расход" или "<ИдентификаторРесурса>Receipt" и "<ИдентификаторРесурса>Expense"; для регистров оборотов: "<Имя ресурса>".

А как вытащить "данные для регистров остатков" при чем и по приходу и по расходу. Почему не написано?
Вопрос опять открыт... поэтому пробовал опять методом тыка
так ..
РесурсПриходРасход

Но ругается.
Так что вопрос открыт. Не смотря на СП.
Так как вытащить данные вне зависимости от приход-расхода... ВСЕ ДАННЫЕ!

Автор: logist 04.05.18, 14:27

Цитата(Gigi @ 04.05.18, 14:28) *
ВСЕ ДАННЫЕ!

Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ РегистрНакопления."+РегистрНакопленияИмя+" КАК Т");

Автор: andr_andrey 04.05.18, 14:53

Gigi @ Сегодня, 14:28 * ,
Если регистр накопления имеет Вид = Остатки, тогда вам будут доступен стандартный реквизит "ВидДвижения" (Приход/Расход), с помощью которого вы сможете высчитывать отдельно приход и расход.
Если этого будет недостаточно, тогда в виртуальных таблицах Остатки и ОстаткиИОбороты на каждый ресурс будет два реквизита РесурсПриход и РесурсРасход.
Это всё и даже больше описано в книге по 1С (обычно в комплекте с 1С) или доступно пытливому уму опытным путём, попробовав в конфигураторе.

Автор: logist 04.05.18, 14:54

andr_andrey, вы что, это же слишком сложно))) автору нужен инструмент "волшебная палочка"))

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua