gifts2017

Клиентское приложение (Толстый клиент) для сервиса изучения методов платформы 1С:Предприятие 8 (+ конструктор запросов)

Опубликовал Евгений Моисеенко (bpc222) в раздел Программирование - Практика программирования

Клиентское приложение для работы с веб-сервисом
IT-Решение: Консоль изучения методов платформы 1С:Предприятие 8
в режиме толстый клиент.
Подготовка к аттестации 1С:Специалист on-line!
Тестовые задания по различным видам учета!
Подсказки для оптимального решения!

Уважаемые коллеги!

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

Страница сервиса на infostart.ru: http://infostart.ru/public/192077/ 


Работа с веб-сервисом возможна с использованием конструктора запросов 1С (аналогично Клиентскому приложению для самоучителя языка запросов 1С 8).

При входе в конфигурацию произоводится аутентификация на веб-сервисе под логином пользователя.

Для регистрации нового пользователя на веб-сервисе необходимо использовать логин: guest, пароль пустой.

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

Решение задачи пользователь представляет в поле "Ваше решение". В процессе решения задач для написания запросов может быть использован Конструктор запросов. В поле "Результат" отображается результат проверки решения задачи. Так же в форме основной обработки представлена персональная статистика и общий рейтинг участников (ТОП 100). Все задачи должны решатся последовательно. Переход к следующей задаче, не решив предыдущую, невозможен.

 

Важно! 
Для получения навыков написания простых и сложных запросов рекомендуем воспользоваться бесплатным сервисом Консоль изучения языка запросов 1С:Предприятие 8).

 

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

Наименование Файл Версия Размер Кол. Скачив.
Дистрибутив поставки
.exe 422,36Kb
02.07.13
169
.exe 422,36Kb 169 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Евгений Моисеенко (bpc222) 27.06.13 18:40
Уважаемые разработчики.

Начал работу новый сервис: Консоль изучения методов платформы 1С:Предприятие 8.
Месяц будет "крутиться" в тестовом режиме, ваши решения будут сохранены.
Задания второго раздела будут опубликованы на днях.
Это клиентское приложение - клиент для сервиса. Его задача - предоставить Вам возможность использования Консоли запросов для разработки прикладных решений.

Ждем Ваших отзывов и предложений. Спасибо.
2. ivanov660 ivanov660 (ivanov660) 28.06.13 09:01
А что в веб варианте не сделали консоль запросов? Взяли хот-бы Больсунова. Не удобно онлайн сервисом пользоваться, по крайней мере подсказки какие-нибудь выдали?
3. Евгений Моисеенко (bpc222) 28.06.13 09:16
(2) ivanov660,

рассмотрим возможность, спасибо.
4. Egor ZeNoches (Egor.ZenNoches) 28.06.13 14:55
5. Денис Кузнецов (kuza_87) 01.07.13 08:29
Дошел до 6-го задания. Пишет что неверное решение. Не могу понять где ошибка. Выполнено всё верно
Вот код
ЗапросЦены = Новый Запрос;
ЗапросЦены.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.Цена,
| ЦеныНоменклатуры.Период КАК Период
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|
|УПОРЯДОЧИТЬ ПО
| Период УБЫВ";
ТЗЦены = ЗапросЦены.Выполнить().Выгрузить();

ВыборкаДоков = Документы.Приходнаянакладная.Выбрать();
Пока ВыборкаДоков.Следующий() цикл
Если ВыборкаДоков.Ссылка.Проведен = Ложь Тогда
Док = ВыборкаДоков.Ссылка.ПолучитьОбъект();
НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
НаборЗаписей.Прочитать();
Для Каждого строка из Док.Товары Цикл
НайденнаяСтрока = ТЗЦены.Найти(строка.Номенклатура, "Номенклатура");
Если НайденнаяСтрока = Неопределено Тогда
Движение = НаборЗаписей.Добавить();
Движение.Период = Док.Дата;
Движение.Номенклатура = Строка.Номенклатура;
Движение.Цена = строка.Цена;
ИначеЕсли НайденнаяСтрока<>Неопределено и
НайденнаяСтрока.Цена<>Строка.Цена Тогда
Движение = НаборЗаписей.Добавить();
Если КонецДня(НайденнаяСтрока.Период) = КонецДня(Док.Дата) Тогда
Движение.Период = КонецДня(Док.Дата)+1;
Иначе
Движение.Период = Док.Дата;
КонецЕсли;
Движение.Номенклатура = Строка.Номенклатура;
Движение.Цена = строка.Цена;

КонецЕсли;

КонецЦикла;
НаборЗаписей.Записать();

КонецЕсли;

КонецЦикла;
6. Денис Кузнецов (kuza_87) 01.07.13 08:30
Я нигде не усмотрел ошибку
7. Евгений Моисеенко (bpc222) 01.07.13 09:54
(5) kuza_87,


Одно из условий задания: "Следует учесть, что записывать в регистр нужно лишь изменившиеся на дату документа цены, учитывая периодичность регистра "В пределах дня"

Скажите, Ваше решение удовлетворяет этому условию?
8. Денис Кузнецов (kuza_87) 01.07.13 11:11
Разобрался, извините. Делал спросони)))
9. Денис Кузнецов (kuza_87) 01.07.13 11:39
А в следующем задании что не так? Задание элементарное. Вот текст кода

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

Запрос.УстановитьПараметр("Ссылка", Док.Ссылка);
Результат = Запрос.Выполнить().Выгрузить();

НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
НаборЗаписей.Прочитать();
НаборЗаписей.Загрузить(Результат);

КонецЕсли;
Конеццикла;
10. Денис Кузнецов (kuza_87) 01.07.13 11:52
11. Евгений Моисеенко (bpc222) 01.07.13 12:55
(8) kuza_87,

Отлично.
не нужно извиняться.
Консоль для этого и предназначена - научиться решать прикладные задачи различного уровня.
12. Евгений Моисеенко (bpc222) 01.07.13 12:58
(9) kuza_87,

1. А где у Вас запись набора?
2. Решите задачу так, как считаете нужным, а затем посмотрите что можно предпринять, чтобы исключить запросы в цикле.
13. Евгений Моисеенко (bpc222) 01.07.13 13:02
(10) kuza_87,


и еще... Если Вам все нравится в нашем сервисе, ставьте лайки.
Это очень нам поможет в продвижении публикаций.

Лайкнуть:
- сервис изучения методов платформы: http://infostart.ru/public/192077/?rate=1
- сервис изучения языка запросов 1С: http://infostart.ru/public/184350/?rate=1
- консоль сервиса изучения методов: http://infostart.ru/public/192076/?rate=1
- консоль сервиса изучения запросов: http://infostart.ru/public/188639/?rate=1

Спасибо.
14. Денис Кузнецов (kuza_87) 01.07.13 13:12
Метод "Загрузить" насколько я знаю записывает данные в регистр, т.е потом не нужно писать "Записать"
15. Денис Кузнецов (kuza_87) 01.07.13 13:13
Так тоже говорит что неверно (лайкну все статьи сегодня)


ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();
Пока ВыборкаДоков.Следующий() Цикл
Если ВыборкаДоков.Проведен = Истина Тогда
Док = ВыборкаДоков.ПолучитьОбъект();
НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
НаборЗаписей.Прочитать();

Для Каждого Строка из Док.Товары Цикл

Движение = НаборЗаписей.Добавить();
Движение.период = Док.Дата;
Движение.Партия = Док.Ссылка;
Движение.Номенклатура = Строка.Номенклатура;
Движение.Количество = Строка.Количество;
Движение.Сумма = Строка.Сумма;
КонецЦикла;



НаборЗаписей.Записать();

КонецЕсли;
Конеццикла;
16. Евгений Моисеенко (bpc222) 01.07.13 13:21
(15) kuza_87,

Измерение склад тоже нужно заполнять. Пользуйтесь схемой данных (кнопка сверху слева).
17. Евгений Моисеенко (bpc222) 01.07.13 13:22
(14) kuza_87,

проверьте это утверждение, а то у меня возникает желание пойти и сжечь все свои сертификаты 1С:Специалист и закусить все это 1С:Экспертом.
18. Денис Кузнецов (kuza_87) 01.07.13 13:31
я тоже про склад думал. просто в вашей конфигурации у этого документа нету склада
19. Денис Кузнецов (kuza_87) 01.07.13 13:35
да, проблема была в складе
20. Евгений Моисеенко (bpc222) 01.07.13 14:07
(18) kuza_87,


спасибо, исправим.
21. Денис Кузнецов (kuza_87) 02.07.13 11:19
8-е задание пишет что неверно.

ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();
Пока ВыборкаДоков.Следующий() Цикл
Если ВыборкаДоков.Проведен Тогда
Док = ВыборкаДоков.Ссылка.ПолучитьОбъект();
НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);
НаборЗаписей.Прочитать();

Для Каждого Строка из Док.Товары Цикл
Строка.ЕдиницаИзмерения = Строка.Номенклатура.ОсновнаяЕдиницаизмерения;
Строка.Сумма = Строка.Количество*Строка.Цена;
КонецЦикла;
Док.Записать();
Для Каждого Строка из Док.Товары Цикл
Движение = НаборЗаписей.Добавить();
Движение.Период = Док.Дата;
Движение.Партия = Док.Ссылка;
Движение.Склад = Док.Склад;
Движение.Номенклатура = строка.Номенклатура;
Движение.Количество = (Строка.Количество*Строка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент);
Движение.Сумма = Строка.Сумма;
КонецЦикла;
НаборЗаписей.Записать();

КонецЕсли;


КонецЦикла;
22. Александр Крынецкий (echo77) 02.07.13 13:40
В толстом клиенте не работает Сообщить() - это неудобно, т.к. других способов отладки результата нет.
В веб-клиенте Сообщить() работает.

Почему требуется расширение для работы с файлами при нажатии на гиперссылки в правой части окна программы?
23. Adapter Бахтыреев (adapter) 04.09.13 17:34
Идея хороша, но вот реализация..... Скачал толстого клиента а там только cf. А почему нет базы с данными? заполненными спр, регистрами сведений? Хотел дать практиканту потренироваться, а в таком виде теперь вряд ли. Надо бы добавить данные и кнопку "выполнить запрос" чтобы сначала хотя бы посмотреть что выдается а потом уже жать "проверить"
24. Adapter Бахтыреев (adapter) 04.09.13 21:08
25. Евгений Моисеенко (bpc222) 05.09.13 05:16
(23) adapter,

Даже не знаю, что Вам ответить.
26. Adapter Бахтыреев (adapter) 05.09.13 09:42
(25) промахнулся с публикацией, камент относился к "самоучитель языка запросов", очень они похожи, даже файлы для скачивания одинаково называются

вот повторил там http://infostart.ru/public/184350/#comm

хотя сейчас посмотрел "изучении методов платформы" та же проблема - только cf без данных. почему бы не заполнить справочники, регистры и раздавать dt ?
27. Евгений Моисеенко (bpc222) 05.09.13 11:47
(26) adapter,

Уважаемый, adapter. ПРОБЛЕМЫ нет. Есть описанная функциональность и представленная.

>почему бы не заполнить справочники, регистры и раздавать dt?
Извините, что вопросом на вопрос: зачем?

Вам чем текущая реализация-то не нравится? Если Вас не устраивает надпись на кнопке "Проверить", то можно ее залепить жвачкой на мониторе.
28. Денис Карпов (dtripleh) 05.03.15 10:54
Не могу решить 6 задачу, уже много времени с ней бьюсь.
Вот мой код:
Запрос = Новый Запрос; 
Запрос.Текст = 
"ВЫБРАТЬ 
|	ЦеныНоменклатуры.Номенклатура, 
|	ЦеныНоменклатуры.Цена, 
|	НачалоПериода(ЦеныНоменклатуры.Период,День) КАК Период 
|ИЗ 
|	РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры 
| 
|УПОРЯДОЧИТЬ ПО 
|	Период УБЫВ"; 
Цены = Запрос.Выполнить().Выгрузить(); 

ВыборкаДоков = Документы.Приходнаянакладная.Выбрать(); 
Пока ВыборкаДоков.Следующий() цикл 
	Если НЕ ВыборкаДоков.Ссылка.Проведен Тогда 
		ДокОбъект = ВыборкаДоков.Ссылка.ПолучитьОбъект(); 
		НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); 
		НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка); 
		НаборЗаписей.Прочитать(); 
		Для Каждого СтрокаТЧ из ДокОбъект.Товары Цикл 
			НайденныеСтроки = Цены.НайтиСтроки(Новый Структура("Номенклатура, Период", СтрокаТЧ.Номенклатура, НачалоДня(ДокОбъект.Дата)));
			Если НайденныеСтроки.Количество() = 0 Тогда 
				Движение = НаборЗаписей.Добавить(); 
				Движение.Период = ДокОбъект.Дата; 
				Движение.Номенклатура = СтрокаТЧ.Номенклатура; 
				Движение.Цена = СтрокаТЧ.Цена; 
			Иначе
				НайденнаяСтрока = НайденныеСтроки[0];
				Если НайденнаяСтрока.Цена <> СтрокаТЧ.Цена Тогда 
					Движение = НаборЗаписей.Добавить();
					Движение.Период = ДокОбъект.Дата + 24*60*60; 
					Движение.Номенклатура = СтрокаТЧ.Номенклатура; 
					Движение.Цена = СтрокаТЧ.Цена;
				КонецЕсли;	
			КонецЕсли; 
		КонецЦикла; 
		НаборЗаписей.Записать();	
	КонецЕсли; 
КонецЦикла;
...Показать Скрыть

Подскажите пожалуйста решение
29. Тимур (user592024_rzane) 07.07.16 11:39
Добрый день.

Вот такая ошибка. Подскажите как можно решить?
Прикрепленные файлы:
30. Евгений Моисеенко (bpc222) 07.07.16 14:49
(29) user592024_rzane,

Убедитесь в том, что ваше подключение к сети Интернет не ограничено
31. Тимур (user592024_rzane) 07.07.16 14:59
(30) bpc222, у нас прокси-сервер. Подскажите как в таком случае подключиться.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа