Остатки на каждый день периода одним запросом - универсальный

Публикация № 101321

Разработка - Практика программирования

Запрос для получения остатков (начальный, конечный, приход, расход) из регистров накопления. Одним запросом. Без вспомагательных регистров и пост-обрабтки запроса. В удобном и читаемом виде.

Запрос будет строится с помощью временных таблиц - очень удбный инструмент, так как не нужно постоянно тянуть данные из таблиц БД. В примере я хочу получить начальный остаток номенклатуры на каждый день из регистра накопления ТоварынаСкладах. Из чего будет состоять запрос:

  1. Во временную таблицу получу набор нужной мне номенклатуры (или весь справочник), по которому мне надо посмотреть остатки;
  2. С помощью Декартова произведения таблиц получим диапазон дат из указанного периода. В указанном примере можно получить только 36 дней, но почитав статью вы сможете ее увеличить под свои требования;
  3. Следующим этапом я решил соединить первые 2 таблицы. Здесь может быть много критики, но я это могу аргументировать тем, что виртуальные таблицы ОстаткиИОбороты могут некорректно отображать нулевые остатки. Это страховка того, что выбранная номенклатура будет учавствовать в выборке запроса.
  4. Теперь очередь за остатками. Как всем озвестно выше упомянутая виртуальная таблица таблица возвращает данные только за тот день, когда остаток был изменен. Поэтому было решено построить на основании данных остатков таблицу следующего вида:
     
    Начало периода Конец периода Номенклатура Количество
           
    Далее при соединенни с таблицей дат, посмотрев в какой интервал остатков входит дата, получаем нужный остаток Главное правильно построить такую таблицу;
  5. Не посредственно само соединение таблицы с датами с таблице с остатками и группировка результата.

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

 

Текст запроса:



ВЫБРАТЬ

   
СпрНоменклатура.Ссылка КАК Номенклатура

ПОМЕСТИТЬ ТЗНоменклатур

ИЗ

   
Справочник.Номенклатура КАК СпрНоменклатура

ГДЕ

    (
НЕ СпрНоменклатура.ПометкаУдаления)

   
И (НЕ СпрНоменклатура.ЭтоГруппа)
;
//////////////////////// - получение таблицы дат и соединение таблиц номенклатуры и дат
ВЫБРАТЬ

   
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, t.n) КАК Дата,

   
ТЗНоменклатур.Номенклатура

ПОМЕСТИТЬ ТаблицаДата

ИЗ
    (ВЫБРАТЬ
       
6 * (t1.a - 1) + t2.b - 1 КАК n
    ИЗ
        (ВЫБРАТЬ

           
1 КАК ОБЪЕДИНИТЬ  ВЫБРАТЬ ОБЪЕДИНИТЬ ВЫБРАТЬ 3  ОБЪЕДИНИТЬ  ВЫБРАТЬ ОБЪЕДИНИТЬ  ВЫБРАТЬ ОБЪЕДИНИТЬ  ВЫБРАТЬ 6) КАК t1

            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

               
1 КАК ОБЪЕДИНИТЬ ВЫБРАТЬ ОБЪЕДИНИТЬ ВЫБРАТЬ ОБЪЕДИНИТЬ  ВЫБРАТЬ  4  ОБЪЕДИНИТЬ ВЫБРАТЬ  ОБЪЕДИНИТЬ ВЫБРАТЬ 6) КАК t2

            ПО (ИСТИНА)) КАК t,

   
ТЗНоменклатур КАК ТЗНоменклатур

ГДЕ

   
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, t.n) ;
//////////////////////// - получение остатков
ВЫБРАТЬ

   
ВложенныйЗапрос.Номенклатура,

   
ВложенныйЗапрос.НачалоПериода КАК НачалоПериода,

   
МАКСИМУМ(ВложенныйЗапрос.Количество) КАК Количество

ПОМЕСТИТЬ Остатки

ИЗ

    (ВЫБРАТЬ

       
&НачалоПериода КАК НачалоПериода,

       
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,

       
ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество

   
ИЗ

       
РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода, ) КАК ТоварыНаСкладахОстатки

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ

       
НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ),

       
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,

       
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток

    ИЗ

       
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ТоварыНаСкладахОстаткиИОбороты)КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО

   
ВложенныйЗапрос.НачалоПериода,

   
ВложенныйЗапрос.Номенклатура
;
////////////////////////- формирование таблицы остатков нужного вида
ВЫБРАТЬ

   
Остатки.НачалоПериода,

   
МИНИМУМ(ДОБАВИТЬКДАТЕ(ЕСТЬNULL(ОстаткиКонец.НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1)), СЕКУНДА, -1)) КАК КонецПериода,

   
Остатки.Номенклатура,

   
Остатки.Количество

ПОМЕСТИТЬ ОстаткиПериодами

ИЗ

   
Остатки КАК Остатки

        ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК ОстаткиКонец

        ПО Остатки.Номенклатура = ОстаткиКонец.Номенклатура

            И Остатки.НачалоПериода < ОстаткиКонец.НачалоПериода

СГРУППИРОВАТЬ ПО

   
Остатки.НачалоПериода,

   
Остатки.Номенклатура,

   
Остатки.Количество
;
/////////////////////// - финальное соединение
ВЫБРАТЬ

   
ТаблицаДата.Дата КАК Дата,

   
ТаблицаДата.Номенклатура КАК Номенклатура,

   
ЕСТЬNULL(ОстаткиПериодами.Количество, 0) КАК Количество

ИЗ

   
ТаблицаДата КАК ТаблицаДата

        ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПериодами КАК ОстаткиПериодами

        ПО (ТаблицаДата.Дата МЕЖДУ ОстаткиПериодами.НачалоПериода И ОстаткиПериодами.КонецПериода)

           
И ТаблицаДата.Номенклатура = ОстаткиПериодами.Номенклатура

УПОРЯДОЧИТЬ ПО
   
Дата

ИТОГИ ПО
   
Номенклатура


Разукрашка по-своему решила разукрасить :)


Скачать файлы

Наименование Файл Версия Размер
Остатки товара на каждый день

.erf 16,18Kb
247
.erf 16,18Kb 247 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. evgeniti 11.12.11 14:04 Сейчас в теме
декартово произведение вроде бы вполне обходится без конструкций ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПО ИСТИНА
select
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, 3*(a-1)+b-1 ) as megafunction
, c as nomenkrlatura
from
(select 1 as a union select 2 union select 3) as t1,
(select 1 as b union select 2 union select 3) as t2,
(select 'крокодил' as c union select 'красный') as t3
-------
да и если уж на то пошло почему бы не пихать вместо двух одинаковыйх строчек вида (select 1 as a union select 2 union select 3) - таблицу значений с цифрами, сформированную в коде, в качестве параметра
4. Angeros 12.12.11 04:22 Сейчас в теме
(1)Формировать в табличку в коде не самый быстрый и гибкий метод. Практика показывает делать это в запросе намного лучше и вообще если есть возможность избавится от параметра лучше это сделать, оно и отлаживать удобней.
2. Smaylukk 840 11.12.11 14:33 Сейчас в теме
Потому что изначально поставил себе цель сделать все одним запросом. Если делать табличку с цыферками - то ее перед запросом нужно сформировать, а при реализации на СКД - вообще такого сделать нельзя, только соединив два набора данных - объект (куда собственно таблица попадет) и запрос, но этот вариант уже реализован.
Что же к Декартовому произведению таблиц - я указал первоисточник, откуда его взял. Можете почитать, почему автор сделал так - просто он делает как раз то, что мне нужно, а далее я не копал
3. Angeros 12.12.11 04:19 Сейчас в теме
А почему было использовано 2 запроса к остаткам, а потом к движениям? Неужели нельзя было обойтись параметром виртуальной таблицы - метод дополнения.
5. Smaylukk 840 12.12.11 10:57 Сейчас в теме
(3), вполне возможно. Я просто делал этот запрос по аналогии с регистрами сведений, когда из них нужно было получить такую же табличку(курсы валют, цены номенклатуры, ...). Просто запрос работает да еще и не очень долго, а я этого и добивался. Если сделаете с методом дополнения с использованием 1 таблички - респект вам :)
6. al_zzz 209 12.02.12 22:15 Сейчас в теме
А запрос точно рабочий? Запускаю в демке по позиции "Петр I Легкие" за период май 2007. При этом получаю в результате, что был на остатки только в последний день периода, хотя по ведомости есть приход от 5 мая 2007.
7. Smaylukk 840 13.02.12 10:37 Сейчас в теме
Запрос точно рабочий. Текст запроса, при вставке в пост потерял несколько символов. Ну и плюс, таблица дата, которую я выложил имеет ограниченность в 36 символов. Попробуйте скачать сам отчет или поменять разрядность таблицы дат.
8. al_zzz 209 13.02.12 21:12 Сейчас в теме
(7) Проверил на самом отчете, количество выдает только на последний день периода, если был всего один приход за период.
9. Smaylukk 840 13.02.12 21:41 Сейчас в теме
(8) al_zzz, извините, не верно понял предыдущий комент. В тексте зпроса я выбираю НачальныйОстаток и соответственно, если был только один приход - в день прихода начальный остаток не изменится. Поменяйте его в тексте запроса на КонечныйОстаток(временная таблица Остатки) и все должно заработать верно.
Спасибо за выявленную неточность
10. akor77 209 13.05.12 21:08 Сейчас в теме
Запрос прекрасно работает. Нужно только добавить одно условие для соединения двух таблиц. Иначе даты с остатками будут "обрезаны" по всем товарам. Пошевелите мозгами сами. Я и так хорошо подсказал.
Автору огромный респект!!!
11. Smaylukk 840 14.05.12 11:47 Сейчас в теме
(10), спасибо, очень приятно :)
12. uri1978 130 15.06.12 01:04 Сейчас в теме
Отчет точно рабочий?
Привожу пример. Меняем дату начала и цифры в отчете разные:


и



По-моему опечатка в коде.
Нужно заменить КоличествоНачальныйОстаток на КоличествоКонечныйОстаток. И тогда отчет заработает, остатки совпадут с "Ведомость по товарам организаций". Т.е. нужно:
	ОБЪЕДИНИТЬ ВСЕ
	
	ВЫБРАТЬ
		НАЧАЛОПЕРИОДА(ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ),
		ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
		ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
13. Smaylukk 840 15.06.12 11:40 Сейчас в теме
(12), как я уже говорил вот здесь (9), да - я там выбирал начальный остаток. Уже не помню зачем. Спасибо за внимательный анализ:)
Хотя вот такая заковыка помогает получше узнать структура и принцип запроса
14. uri1978 130 15.06.12 11:48 Сейчас в теме
Да, действительно не прочитал комментарии. Спасибо за обработку, натолкнула на правильное решение.
15. Smaylukk 840 15.06.12 11:51 Сейчас в теме
(14), очень рад, что вам пригодилось
16. Smaylukk 840 03.07.12 00:44 Сейчас в теме
Во второй временной таблице "ТаблицаДата" условие должно быть следующим:

ГДЕ

ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, t.n) <= &КонецПериода ;

Последнее убирается при вставке в публикацию.
Извините
17. petrov_al 10 03.07.12 13:11 Сейчас в теме
Обратите внимание!!! Запрос корректно отрабатывает не всех ситуациях, например попробуйте например сформировать за период 01.12.2011 по 06.01.2012
Вообщем нужно либо дорабатывать либо на помойку.
18. petrov_al 10 03.07.12 13:23 Сейчас в теме
Анализируйте что выдает конкретно этот подзапрос

ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, t.n) КАК Дата
ИЗ
(ВЫБРАТЬ
6 * (t1.a - 1) + t2.b - 1 КАК n
ИЗ
(ВЫБРАТЬ

1 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6) КАК t1

ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

1 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6) КАК t2

ПО (ИСТИНА)) КАК t
ГДЕ
ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), ДЕНЬ, t.n) <= &КонецПериода

УПОРЯДОЧИТЬ ПО
Дата
19. Smaylukk 840 04.07.12 09:08 Сейчас в теме
(18) , если вы внимательно читали публикацию - то могли заметить, что в пунтке 2, где я описывал Декартово произведение таблиц - указано, что даный запрос возвращает 36 дней. Запрос вполне рабочий при определенных условиях. Выложен как вариант реализации данной задачи. Все расписано и указаны ссылки первоисточников, так что под свои нужды его очень быстро можно подстроить. Если же вы не в силах это сделать - обращайтесь к специалистам.
20. aspirator23 451 09.07.12 07:27 Сейчас в теме
Или я не понял, или эта задача решается с использованием СКД.
Получение остатков на каждую дату решается установкой периода День.
21. Smaylukk 840 09.07.12 09:45 Сейчас в теме
(20) , возможно и решается. Но основной идеей этой публикации была реализация задачи БЕЗ использования каких-то инструментов кроме запроса.
Если вам при проведении какого-то документа понадобится данная табличка - вы же не будете СКД туда цеплять :)
22. aspirator23 451 09.07.12 13:12 Сейчас в теме
(21) Согласен, если действительно не нужен отчет.
23. Созинов 10.07.12 15:22 Сейчас в теме
(20) aspirator23,
не решается, у вас будут остатки не на каждый день. Для этого и выдумывают виртуальную таблицу дат.

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


Еще дополнение - запрос не считает дни, когда товар пришел днем и в этот же день был продан. Я тупо подставил регистр продаж в подзапрос по остаткам 3 объединением. Может кто подскажет как по нормальному сделать подсчет таких дней (утром и вечером нет остатка по товару, остаток только днем)?
24. Smaylukk 840 10.07.12 16:49 Сейчас в теме
(23) , попробуйте брать НачальныйОстаток + Приход - по идее должно сработать.
25. Гость 04.10.12 14:48
Я выбираю остатки по контрагентам(задолженность), и у меня почему-то в таблице ОстаткиПериодами получаются нулевые периоды, за 1 апреля есть остаток, а за 2 нет....
26. AntonH851 81 04.10.12 14:52 Сейчас в теме
Потому что у меня считаются не сами остатки а разность дт и кр, причем только но документам дата которых удовлетворяет определенному условию, и в результате некоторые строки в таблице остатки получаются с нулевым остатком
27. wildwilduser 5 24.12.12 09:29 Сейчас в теме
подскажите пожалуйста, может чего недопонимаю
но вот эта строчка
МИНИМУМ(ДОБАВИТЬКДАТЕ(ЕСТЬNULL(ОстаткиКонец.НачалоПериода, ДОБАВИТЬКДАТЕ(&КонецПериода, СЕКУНДА, 1)), СЕКУНДА, -1)) КАК КонецПериода

получает конец дня перед ОстаткиКонец.НачалоПериода. это верно?
я полагаю что должен быть конец дня ОстаткиКонец.НачалоПериода.
ещё раз возможно что то недопонимаю.
28. Smaylukk 840 24.12.12 10:41 Сейчас в теме
(27), попробую объяснить:
  • В таблице ОстаткиКонец поле НачалоПериода всегда больше, чем в таблице Остатки.
  • Строка, что вы написали берет минимальную дату, которая больше НачалоПериода в таблице Остатки.
  • Далее, чтобы не было такого, что КонецПериода текущей строки и НачалоПериода следующей не были одинаковы (могут потом быть дублирования) нужно отнять 1 секунду.
  • Ну и последний штрих - для последней записи таблицы уже нет соответствия в таблице ОстаткиКонец, поэтому берем значение параметра &КонецПериода
Как-то так
29. wildwilduser 5 24.12.12 11:16 Сейчас в теме
т.е. в таблице ОстаткиПериодами получаем строки двежений, а ДатаНачала и ДатаКонца это даты между движениями по этим позициям?
30. Smaylukk 840 24.12.12 11:27 Сейчас в теме
(29), Да. И если остаток не менялся за этот период, то мы можем на каждый день в этот промежуток поставить определенное значение.
31. straus 27.12.12 17:39 Сейчас в теме
Касательно объединения в таблице остатков, это необходимо, только на мой взгляд параметр должен быть немного другим:
РегистрНакопления.ТоварыНаСкладах.Остатки(КОНЕЦПЕРИОДА(&НачалоПериода, ДЕНЬ), ) КАК ТоварыНаСкладахОстатки
32. Smaylukk 840 27.12.12 18:03 Сейчас в теме
(31), А разве послудеющее объединение
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ТоварыНаСкладахОстаткиИОбороты
не подтянет эти изменения?
И вполне возможно, что для учета конечных остатков по дням ваш вариант лучше.
Но в примере я решил (на свою голову) выбрать начальные остатки по дням, поэтому ваш пример мне не покажет правильной картины, если было движение в в день
&НачалоПериода
.
Спасибо за отзыв
34. straus 27.12.12 18:32 Сейчас в теме
(32)
Я получил начальные остатки просто сместив дату в таблице остатков на день вверх, по другому у меня не получилось
33. straus 27.12.12 18:22 Сейчас в теме
простите за кучу правок, не ожидал, что так быстро ответят. Я пытался получить остатки на начало дня и активно испытывал Ваш запрос.
тогда нужно совсем удалить объединение с таблицей остатков иначе первой строкой будет остаток именно на начало дня
35. Smaylukk 840 27.12.12 18:48 Сейчас в теме
(33) , так ведь начальный остаток и нужен на начало дня :).
Но если у вас все получилось согласно вашим ожиданиям - тогда все ОК.
36. straus 27.12.12 19:00 Сейчас в теме
так конечный остаток предыдущего дня и есть начальный остаток текущего или я что то не понимаю?
плюс ко всему, максимум непредсказуемо выберет либо начальный остаток, либо конечный
37. kauksi 210 17.02.13 09:22 Сейчас в теме
полезная штука. но поправьте уже обработку согласно замечаниям тут
40. Smaylukk 840 19.02.13 00:02 Сейчас в теме
(37) ,что именно нужно поправить?
38. ildarovich 7223 17.02.13 16:43 Сейчас в теме
Не рекомендую эту статью к использованию. Ну не должна такая простая задача выливаться в запрос из более сотни строк! Более правильное в методологическом смысле решение (опирающееся на понимание устройства виртуального регистра остатков) можно найти в публикации Запрос по остаткам регистра накопления на каждый день, а еще более короткое - в моем комментарии к этой же статье.
ZOMI; rozhkovdmitriy; ErrorEd88; zqzq; +4 Ответить
39. Smaylukk 840 19.02.13 00:01 Сейчас в теме
Ну сколько нужно повторять? Запрос написан без использования вспомогательных регистров для получения таблицы дат. Наилучшее решение (даже лучше вашего "короткого") - использовать производственный календарь, там точно есть все даты.
А относительно количества строк - я расширенно показал, как сделать поставленную задачу. И заданием этой статьи было поделиться знаниями. И думаю это понятнее, чем "вот такой запрос, только даты берите там, где у вас каждый день регистр изменяется (не в обиду автора упомянутой публикации)".
И на своей базе я не могу посмотреть тем запросом остатки на каждый день. Нет у меня такого регистра.
После этого вы будете утверждать что мой вариант плохой?
41. ABudnikov 3 10.09.13 16:51 Сейчас в теме
Применил этот метод к данным по своим остаткам.
Ошибку, с которой пока так и не поборолся нашёл в том, что не корректно считает остатки в первый день изменения.
Пример:
Есть входящий остаток 50 шт. Период построения запроса с 01.09 по 10.09.
Остаток менялся 05.09 на 45 шт и 08.09 на 30 шт.
В результате таблица остатков выглядит следующим образом:

01.09 - 00:00 | 04.09 - 23:59 | 50 шт - верно
05.09 - 00:00 | 07.09 - 23:59 | 50 шт - не верно ведь остаток на 06.09 должен быть 45 шт
08.09 - 00:00 | 08.09 - 23:59 | 45 шт - верно
09.09 - 00:00 | 09.09 - 23:59 | 30 шт - верно
42. Smaylukk 840 10.09.13 16:59 Сейчас в теме
(41) ABudnikov, в запросе вы берете НачальныйОстаток или КонечныйОстаток? Если брали запрос из публикации - то там Начальный остаток, о чем указано в статье и что соответствует вашим данным.
43. ABudnikov 3 10.09.13 17:12 Сейчас в теме
(42) беру НачальныйОстаток - так же как и в статье.
да и данные я понимаю как получились технически. Но получатся что логически остаток не верный для первой записи из соединения с таблицей остатков по дням - о чем я и написал

Конечный остаток на 05.09 и соответственно начальный на 06.09 у меня 45 шт.
А в результате работы запроса показывает что на 06.09 50 шт а не 45 шт.
44. Smaylukk 840 10.09.13 20:25 Сейчас в теме
(43) ABudnikov, не согласен. Запрос в статье все верно показывает. Смотрим на ваш пример, но я немного расширю таблицу:
Начало периода |Конец периода |Нач. ост.| Оборот|КонОст | Что берет запрос
01.09 - 00:00 | 04.09 - 23:59 | 50 шт | 0 | 50 шт | 50 шт
05.09 - 00:00 | 07.09 - 23:59 | 50 шт | -5 | 45 шт | 50 шт
08.09 - 00:00 | 08.09 - 23:59 | 45 шт | -15 | 30 шт | 45 шт
09.09 - 00:00 | 09.09 - 23:59 | 30 шт | 0 | 30 шт | 30 шт
ABudnikov; +1 Ответить
45. ABudnikov 3 10.09.13 20:36 Сейчас в теме
(44) Хорошо а теперь если эту таблицу соединить с таблицей дат, то получается что на начало 06.09 остаток 50 шт, что не является правильным ответом, т.к. 05.09 произошло списание 5 шт
У Вас в статье написано: "Далее при соединении с таблицей дат, посмотрев в какой интервал остатков входит дата, получаем нужный остаток Главное правильно построить такую таблицу"
Так вот получается что таблица периодов не отражает всю действительность.
46. Smaylukk 840 10.09.13 22:40 Сейчас в теме
(45) ABudnikov, ну так выбирайте конечный остаток и будет вам счастье. Почему оно должно показать вам все правильно, если вы выбираете начальный остаток? Виртуальная таблица оборотов дает 4 даты - начало, конец и даты расходов. В день, когда был расход, начальный остаток не изменялся. Это касается 5 и 8 числа. Т.е. в вашей первоначальной таблице и 8 числа должно быть неправильно.
47. ABudnikov 3 11.09.13 10:44 Сейчас в теме
(46) :) так задача состоит в том, чтоб получить начальные остатки. Да и 8-го тоже не правильный начальный остаток.
Т.к. у Вас в описано получение начальных остатков, я просто хотел указать что приведенный запрос не корректно решает описанную задачу.
52. Smaylukk 840 24.03.14 19:26 Сейчас в теме
(47), да, вы были правы. Только сейчас до этого допер. Спасибо.
48. BTRVODKA 10 15.09.13 04:28 Сейчас в теме
Спасибо, за вашу публикацию!
49. Mails79 12 11.02.14 12:09 Сейчас в теме
Спасибо.
Весь фокус в формирование таблицы остатков по периодам.
Сам бы долго соображал что нужно:)
50. bulpi 180 07.03.14 17:25 Сейчас в теме
Имхо, ошибка в том, что Вы берете начальный остаток, а не конечный. Пример :
Товар1,
нач.остаток 01.01.14 - 5 шт, кон.остаток 3 шт.
нач.остаток 10.01.14 - 3 шт

У Вас получится, что с 02.01 по 09.01 нач.остаток 5. А на самом деле он 3!

51. Smaylukk 840 24.03.14 19:25 Сейчас в теме
(50), да, вы правы. С начальными остатками я перемудрил. Не работает. И если честно, то завис - не пойму как сделать :)
53. Aleksey81 1077 14.08.14 23:00 Сейчас в теме
Автор молодец. Очень полезный код выложил. Важно лишь отметить что в том виде, что он изложен можно использовать период не более 36 дней. Ограничение прямо выходит из способа формирования таблицы дат путем "комбинирования" двух массивов по 6 чисел.
54. JorjKrut 5 25.01.17 11:14 Сейчас в теме
Ребята, вопрос: а чем вам не нравится стандартный механизм дополнения по периоду в итога? А потом выборку из результата запроса обходить с параметрами: ЗапросРезультат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ПолеПериод", "ВСЕ");

Получаем остатки на каждый день таким образом без лишнего геморроя.)

56. Smaylukk 840 04.02.17 00:27 Сейчас в теме
(54) На момент написания публикации этот механизм давал пропуски, если не было движений по регистру. А здесь важно именно видеть остатки на каждый день.
Как сейчас обстоят дела - не знаю, не мониторил.
55. JorjKrut 5 25.01.17 13:29 Сейчас в теме
Кроме того, если дат не очень много, можно объединять таблицы с последовательным увеличением периода виртуальной таблицы остатков и оборотов на один день. См. пример ниже:

Функция ПолучитьДанныеОстатки(ПериодОтчета)
			
	МассивДатОтчета   = Новый Массив;
	ДатаВМассив = НачалоДня(ПериодОтчета.ДатаНачала);
	ДатаОкончания = НачалоДня(ПериодОтчета.ДатаОкончания);
		
	Пока ДатаВМассив <= ДатаОкончания Цикл
		МассивДатОтчета .Добавить(ДатаВМассив);
		ДатаВМассив = КонецДня(ДатаВМассив) + 1;
	КонецЦикла;
	РазмерМассиваДат  = МассивДатОтчета.ВГраница();
	ЗапросТекстНачало =    "ВЫБРАТЬ
				              |	ВЫБОР
				              |		КОГДА ТИПЗНАЧЕНИЯ(Добавлено_БанкиКассыПланОстаткиИОбороты.БанкКасса) ТИП(Справочник.Банки)
				              |			ТОГДА ""БАНК""
				              |		ИНАЧЕ ""КАССА""
				              |	КОНЕЦ КАК БанкИлиКасса,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.Группа КАК Группа,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.БанкКасса КАК БанкКасса,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.РасчетныйСчет КАК РасчетныйСчет,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.Огранизация КАК Огранизация,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.Период КАК ДатаПоЗаявке,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.СуммаНачальныйОстаток КАК СуммаОстатокНачало,
				              |	Добавлено_БанкиКассыПланОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаОстатокКонец
				              |ИЗ
				              |	РегистрНакопления.Добавлено_БанкиКассыПлан.ОстаткиИОбороты(&НачалоПериода, &НачалоПериода, День, , ) КАК Добавлено_БанкиКассыПланОстаткиИОбороты";
	ЗапросТекстОбъединить = Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС;
	ЗапросТекстИтоги = Символы.ПС + "ИТОГИ
							|	СУММА(СуммаОстатокНачало),
							|	СУММА(СуммаОстатокКонец)
							|ПО
							|	ОБЩИЕ,
						 	|	БанкИлиКасса,
							|	Группа,
							|	БанкКасса,
							|	РасчетныйСчет,
							|	Огранизация,
							|	ДатаПоЗаявке";
											
	ЗапросТекст = ЗапросТекстНачало;						
	Для Индекс = 1 По РазмерМассиваДат Цикл
			ЗапросТекстДляДобавления = СтрЗаменить(ЗапросТекстНачало, "&НачалоПериода", "ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, " + Строка(Индекс) + ")");
			ЗапросТекст = ЗапросТекст + ЗапросТекстОбъединить + ЗапросТекстДляДобавления;
	КонецЦикла;	
	ЗапросТекст = ЗапросТекст + ЗапросТекстИтоги;	
			
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("НачалоПериода", ПериодОтчета.ДатаНачала);
	Запрос.УстановитьПараметр("КонецПериода", КонецДня(ПериодОтчета.ДатаНачала)+1);
	Запрос.Текст = ЗапросТекст;
	ЗапросРезультат = Запрос.Выполнить();				
	Возврат ЗапросРезультат;
КонецФункции
Показать
57. AndiA 13.05.19 01:51 Сейчас в теме
Была в чем то аналогичная задача в УТ11: Посчитать средние продажи за день без учета дней, когда товара на складе не было. Причем нужно это было в отчете на СКД. На мой взгляд получилось проще (хотя для справедливости и пример я упростил).
Запрос выводит остатки товара на каждый день и расход (если он был)
Может кому интересно будет...

ВЫБРАТЬ РАЗРЕШЕННЫЕ
	&д1 КАК Период,
	ТоварыНаСкладах.Номенклатура КАК Номенклатура,
	НЕОПРЕДЕЛЕНО КАК Регистратор,
	0 КАК Расход,
	0 КАК Остаток
ПОМЕСТИТЬ ОстаткиИОбороты
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки(&д1 , 
		Номенклатура в иерархии (&Группа)
		) КАК ТоварыНаСкладах
где ТоварыНаСкладах.ВНаличииОстаток=0		
объединить все		
ВЫБРАТЬ 
	ТоварыНаСкладах.ПериодСекунда,
	ТоварыНаСкладах.Номенклатура КАК Номенклатура,
	ТоварыНаСкладах.Регистратор,
	ТоварыНаСкладах.ВНаличииРасход,
	выбор когда 
	ТоварыНаСкладах.ВНаличииНачальныйОстаток =0 и
	ТоварыНаСкладах.ВНаличииКонечныйОстаток = 0 тогда 0 иначе ТоварыНаСкладах.ВНаличииКонечныйОстаток конец
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&д1 , &д2 , АВТО, , 
		Номенклатура в иерархии (&Группа)
		) КАК ТоварыНаСкладах
;

выбрать   
	к.Дата,
	ном.Ссылка КАК Номенклатура,
	МАКСИМУМ(ТоварыНаСкладах.Период) как Период
поместить табПериоды
из 
справочник.Номенклатура как ном
полное соединение
регистрсведений.ДанныеПроизводственногоКалендаря     как к
по ИСТИНА
левое соединение ОстаткиИОбороты как  ТоварыНаСкладах
по   к.дата >= ТоварыНаСкладах.Период
	и ном.Ссылка=ТоварыНаСкладах.Номенклатура
где 
к.дата>=&д1 и к.дата<=&д2
и Ном.ссылка в иерархии (&Группа)

сгруппировать по к.Дата,ном.Ссылка
;

выбрать 
	ном.Номенклатура КАК Номенклатура,
	СУММА(выбор когда isNull(ТоварыНаСкладах.Остаток,0)=0 
	 тогда 1 иначе 0 конец) как ДнейБезТовара
поместить НаличиеТовара	
из 
табПериоды как ном
левое соединение ОстаткиИОбороты как  ТоварыНаСкладах
по   ном.Период = ТоварыНаСкладах.Период
	и ном.Номенклатура=ТоварыНаСкладах.Номенклатура

сгруппировать по ном.Номенклатура
;

выбрать 
  ном.Дата,
  ном.Номенклатура,
  ТоварыНаСкладах.Остаток
поместить табОстатки
из   табПериоды как ном
левое соединение  ОстаткиИОбороты как  ТоварыНаСкладах
по   ном.Период = ТоварыНаСкладах.Период
	и ном.Номенклатура=ТоварыНаСкладах.Номенклатура
;

выбрать 
  ном.Дата,
  ном.Номенклатура,
  НаличиеТовара.ДнейБезТовара,
  ном.Остаток,
  isNull(ТоварыНаСкладах.Регистратор,НЕОПРЕДЕЛЕНО) как Регистратор,
  isNull(ТоварыНаСкладах.Расход,0)  как Расход
из   табОстатки как ном
внутреннее соединение   НаличиеТовара как НаличиеТовара
по ном.Номенклатура=НаличиеТовара.Номенклатура    
левое соединение  ОстаткиИОбороты как  ТоварыНаСкладах
по   ном.Дата = началопериода(ТоварыНаСкладах.Период,ДЕНЬ)
	и ном.Номенклатура=ТоварыНаСкладах.Номенклатура
упорядочить по ном.Дата
Показать
58. vis_tmp 30 21.05.19 15:20 Сейчас в теме
По-моему, за период в котором не было движений запрос не выбирает вообще ничего.
У вас так же?
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    3900    19    huxuxuya    11    

Анализ оборачиваемости для УТ 11.4

Оптовая торговля v8::ОУ v8::СКД УТ11 Россия УУ Абонемент ($m)

Отчет по оборачиваемости для УТ 11.4 на регистре "Товары организаций". "Родился" в результате выполнения тестового задания. "Облагорожен" для данной публикации.

1 стартмани

18.02.2020    3006    25    user633166    0    

Конвейер проверки качества кода

Инструментарий разработчика Практика программирования Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    29895    26    Stepa86    46    

Вам нравятся запросы в 1С?

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

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

1 стартмани

03.07.2019    23586    6    m-rv    90    

Правильные аналоги номенклатуры (кроссы запчастей) для 1С / Управляемые формы Промо

Обработка справочников Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 v8::УФ 1cv8.cf УУ Абонемент ($m)

По опыту работы с запчастями много раз сталкивался с проблемой организации кроссов в разных 1С - от записи артикулов через запятую в текстовом поле до хранения кроссов в документах. Предлагаю одну из простейших и функциональных на мой взгляд схем "одноуровневого" хранения кроссов.

5 стартмани

29.07.2015    39661    3    taurus__    23    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    50583    262    informa1555    234    

Выгрузка изображений из справочника на диск

Учет ТМЦ Универсальные обработки Учет ТМЦ v8 УТ11 Оптовая торговля, дистрибуция, логистика Россия Абонемент ($m)

Обработка позволяет записать изображения из справочка Номенклатура на диск в указанное место.

1 стартмани

30.11.2018    20417    8    wrooom    8    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    24273    13    RocKeR_13    16    

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

Универсальные функции Инструментарий разработчика Учет ТМЦ Учет ТМЦ v8 1cv8.cf Россия БУ Абонемент ($m)

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

1 стартмани

17.08.2015    49913    168    ekaruk    32    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    31273    28    informa1555    26    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    56298    21    kalyaka    16    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар")

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    32833    88    m-rv    58    

Менеджер загрузки данных из весов с печатью этикеток Промо

Внешние источники данных Весы Учет ТМЦ Учет ТМЦ v8 УТ10 УПП1 Абонемент ($m)

Программное обеспечение "Менеджер загрузки данных из весов с печатью этикеток" предназначено для автоматического получения данных по сети Ethernet из весов МАССА-К моделей ВПМ и ТВ_Р3 (модификация MF) в режиме On-Line.

1 стартмани

20.12.2011    24961    81    hrip    10    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    35020    11    SITR-utyos    13    

Заполняем по шаблону (по умолчанию)

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    30836    20    mvxyz    17    

Давно обещанная автовесовая 8.Х

Производство Учет ТМЦ Учет ТМЦ v8 Россия УУ Абонемент ($m)

Финальная версия автовесовой без оператора.

10 стартмани

02.01.2018    22485    7    Арчибальд    1    

Перемещение остатков по счету МЦ04 между материально ответственными лицами для конфигураций (8.2). Промо

Обработка документов Универсальные обработки Учет ТМЦ Учет ТМЦ v8 БП2.0 Россия БУ Абонемент ($m)

Небольшая обработка, которая позволяет перекидывать остатки по счету МЦ04 с одного материально ответственного лица на другое

1 стартмани

22.11.2012    18031    102    niksaf    4    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    29347    56    kwazi    6    

Загрузка дополнительных реквизитов и сведений справочника Номенклатура из Excel и таблиц УТ 11, ERP 2

Обработка справочников Загрузка и выгрузка в Excel Учет ТМЦ Учет ТМЦ v8 v8::ОУ ERP2 УТ11 Россия УУ Абонемент ($m)

Внешняя обработка "Загрузка дополнительных реквизитов и сведений справочника Номенклатура"

1 стартмани

07.08.2017    45618    292    Windyhead    44    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

В этой статье я на примерах разберу некоторые механизмы расширений конфигураций 1С. А именно «перехваты» методов модуля объекта и «перехваты» событий формы и элементов формы. Данная статья написана с учебными целями, чтобы показать, как при помощи расширений конфигурации можно делать такие доработки, ради которых раньше приходилось снимать конфигурацию с поддержки.

1 стартмани

30.05.2017    147213    13    signum2009    48    

Сравнение справочников Промо

Анализ учета v8 1cv8.cf Абонемент ($m)

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

10 стартмани

11.02.2014    16701    18    kiberiq    24    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

13.03.2017    34470    119    romasna    49    

Поиск и исправление ошибок при заполнении 6-НДФЛ в ЗУП 2.5, Бухгалтерии 2.0, УПП 1.3 версия от 28.08.2018

Регламентированная отчетность Бухгалтерские Анализ учета Зарплата Зарплата v8 v8::БУ v8::СПР БП2.0 ЗУП2.5 УПП1 Россия БУ НДФЛ Абонемент ($m)

Помощь в поиске и исправлении ошибок при заполнении отчёта 6-НДФЛ в ЗУП 2.5, Бухгалтерии 2.0 Просмотр всех записей регистров, имеющих отношение к учёту НДФЛ с детализаций до сотрудника и документа. Ручная корректировка основных регистров. Обновлённая версия от 02.07.2018г

3 стартмани

25.10.2016    40721    216    serge_msk    21    

Несколько шаблонов для доработки типовых конфигураций

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

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

1 стартмани

03.10.2016    39047    96    json    25    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    50850    36    Demanoidos    60    

Проверка заполнения штрихкодов для УТ 11.2/11.3 и Розница 2.2

Оптовая торговля Розничная торговля Рабочее место Анализ учета Оптовая торговля Розничная торговля v8 Розница УТ11 Розничная и сетевая торговля (FMCG) Россия УУ Абонемент ($m)

Новое поступление товаров? Хотите быстро и просто проверить, на все ли товары заданы штрихкоды и быстро? Тогда эта обработка для вас!

1 стартмани

27.07.2016    36701    84    RocKeR_13    37    

Анализ оборачиваемости запасов

Управленческие Оптовая торговля Ценообразование, анализ цен Оптовая торговля Ценообразование, анализ цен v8 УНФ УУ Абонемент ($m)

Отчет смотрит, сколько пролежал тот или иной товар на складе, текущий остаток, определяет, сколько расчетно продается в день, за год, выявляет неликвиды и выводит рекомендации, что заказать, а какой товар продать. Отчет разработан в базе без производственного календаря и может быть интересен для разработчика в качестве примера.

1 стартмани

15.06.2016    10366    37    ZUL_MTFKA    2    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    61742    11    wowik    32    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

Инструментарий разработчика Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    67293    199    rozer    66    

Остатки на каждый день в запросе

Практика программирования Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Абонемент ($m)

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    66688    19    arakelyan    22    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

Практика программирования v8 1cv8.cf Россия Абонемент ($m)

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    87442    165    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

Практика программирования v8 Абонемент ($m)

При реализации периодического авто-заполнения маршрутных листов по графику (недельному) необходимо было просчитать стоимость всего периода, с условием выездов только по определенным дням. Заморачиваться с обходом результата не хотелось. Пришлось написать "Небольшой" запрос.

1 стартмани

03.03.2016    20180    1    Alexander.Shvets    5    

Простые радости жизни программиста 1С: выбор типа значения

Работа с интерфейсом Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

17.02.2016    53920    54    yuraos    18    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Абонемент ($m)

В статье описан способ исполнения длительных операций в конфигурациях, в которых используется библиотека стандартных подсистем, с визуализацией прогресса исполнения и отображения хода обработки данных. Также дается краткое описание процесса отладки длительных операций в текущем сеансе.

1 стартмани

17.02.2016    61173    201    balanton    23    

Яндекс.Деньги "Благотворительность"

Инструментарий разработчика Практика программирования v8 1cv8.cf Абонемент ($m)

Яндекс.Деньги теперь в 1С. Форма для приема благотворительных взносов. Форму легко сделать и вставить на любую страницу сайта или блога. Платежи будут приходить на ваш кошелек. На форме есть три способа платежа: из кошелька, с банковской карты, с баланса мобильного.

1 стартмани

16.02.2016    25266    8    Tatitutu    5    

Пакетная замена номенклатуры с учетом характеристик

Обработка документов Оптовая торговля Учет ТМЦ Оптовая торговля Учет ТМЦ v8 КА1 УТ10 УПП1 УУ Абонемент ($m)

Обработка "Пакетная замена номенклатуры" в Заказе покупателя, Реализации и Поступлении товаров с использованием отбора по значениям характеристик

1 стартмани

22.01.2016    27027    3    trendy    1    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    42266    20    milkers    4    

Нечеткий поиск одним запросом

Практика программирования v8 1cv8.cf Абонемент ($m)

Использование механизма полнотекстового поиска в 1С не всегда оправдано, т.к. построение индекса и поддержание его в актуальном состоянии может значительно нагружать систему. Предлагаемая реализация нечеткого поиска методом N-грамм выполняется одним запросом, что позволяет производить поиск в любой таблице и не требует предварительного построения индекса.

1 стартмани

28.12.2015    30448    72    vasvl123    9    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

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

1 стартмани

06.12.2015    60599    50    YPermitin    19    

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    102472    482    Luchik    209    

Складские операции на ТСД

Терминал сбора данных Учет ТМЦ Учет ТМЦ v8 УУ Абонемент ($m)

Складская мобильная программа для терминалов сбора данных.

1 стартмани

15.11.2015    28409    4    JetBrain    8    

Быстрое определение интервалов в запросе

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    55555    35    ildarovich    41    

Полезные приемы при работе с Excel из 1С (Версия 3.1)

Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel v8 1cv8.cf Абонемент ($m)

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    222843    476    Zerocl    76    

Javascript и 1С. Кросс-платформенное взаимодействие

Практика программирования v8 1cv8.cf Абонемент ($m)

Что делать, если необходим богатый интерфейс, а управляемые формы нам его не могут обеспечить? Использовать HTML и JavaScript. В статье рассмотрено взаимодействие кода 1С и JavaScript, работающее на любой платформе: толстый, тонкий и веб-клиент, под Windows и Linux.

1 стартмани

14.09.2015    73813    210    VitaliyCeban    59    

Code First и Linq to EF на примере 1С версии 7.7 и 8.3 часть I

Практика программирования v8 Абонемент ($m)

Данный проект является чисто исследовательским примером использования Code First и Linq to EF на примере 1С версии 7.7. Так как сам я программист 1С, то мне всегда было интересно, как можно перенести модель объектов 1С на компилируемые языки, и использовать мощь Linq to EF. С появлением Code First давно хотел прикрутить, но все как-то руки не доходили, и вот, наконец ..

1 стартмани

28.08.2015    24201    3    Serginio    2